Changeset 13639


Ignore:
Timestamp:
10/12/12 11:35:19 (12 years ago)
Author:
Mathieu Morlighem
Message:

NEW: added WriteData for riftstruct

Location:
issm/trunk-jpl/src/modules/TriMeshProcessRifts
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/modules/TriMeshProcessRifts/TriMeshProcessRifts.cpp

    r13634 r13639  
    3939
    4040        /*call x layer*/
    41         TriMeshProcessRiftsx(&index,&nel,&x,&y,&nods,&segments,&segmentmarkers,&num_seg,
    42                                 &riftstruct);
     41        TriMeshProcessRiftsx(&index,&nel,&x,&y,&nods,&segments,&segmentmarkers,&num_seg,&riftstruct);
    4342
    4443        /*Output : */
     
    4847        WriteData(SEGMENTSOUT,segments,num_seg,3);
    4948        WriteData(SEGMENTMARKERSOUT,segmentmarkers,num_seg,1);
    50 
    51         mxArray    *pmxa_array    = NULL;
    52         mxArray    *pmxa_array2   = NULL;
    53         mxArray    *pmxa_array3   = NULL;
    54         const char *fnames[10];
    55         mwSize      ndim          = 2;
    56         mwSize      dimensions[2] = {1,1};
    57         double     *pair          = NULL;
    58 
    59         /*Create a structure rifts where if i is a rift number, we have the following fields rifts(i).segments and rifts(i).numsegs: */
    60         fnames[0] = "numsegs";
    61         fnames[1] = "segments";
    62         fnames[2] = "pairs";
    63         fnames[3] = "tips";
    64         fnames[4] = "penaltypairs";
    65         fnames[5] = "fill";
    66         fnames[6] = "friction";
    67         fnames[7] = "fraction";
    68         fnames[8] = "fractionincrement";
    69         fnames[9] = "state";
    70 
    71         dimensions[0]=riftstruct->numrifts;
    72         pmxa_array=mxCreateStructArray(ndim,dimensions,10,fnames);
    73 
    74         for(int i=0;i<riftstruct->numrifts;i++){
    75 
    76                 /*Segments: */
    77                 WriteData(&pmxa_array3,riftstruct->riftssegments[i],riftstruct->riftsnumsegments[i],3);
    78                 mxSetField(pmxa_array,i,"segments",pmxa_array3);
    79                 mxSetField(pmxa_array,i,"numsegs",mxCreateDoubleScalar((double)riftstruct->riftsnumsegments[i]));
    80 
    81                 /*Element pairs: */
    82                 WriteData(&pmxa_array3,riftstruct->riftspairs[i],riftstruct->riftsnumpairs[i],2);
    83                 mxSetField(pmxa_array,i,"pairs",pmxa_array3);
    84 
    85                 /*Tips: */
    86                 pmxa_array2= mxCreateDoubleMatrix(0,0,mxREAL);
    87                 mxSetM(pmxa_array2,1);
    88                 pair=(double*)mxMalloc(2*sizeof(double));
    89                 pair[0]=*(riftstruct->riftstips+2*i+0);
    90                 pair[1]=*(riftstruct->riftstips+2*i+1);
    91                 mxSetN(pmxa_array2,2);
    92                 mxSetPr(pmxa_array2,pair);
    93                 mxSetField(pmxa_array,i,"tips",pmxa_array2);
    94 
    95                 /*Penalty pairs: */
    96                 WriteData(&pmxa_array3,riftstruct->riftspenaltypairs[i],riftstruct->riftsnumpenaltypairs[i],7);
    97                 mxSetField(pmxa_array,i,"penaltypairs",pmxa_array3);
    98 
    99                 /*Friction fraction, fractionincrement  and fill: */
    100                 mxSetField(pmxa_array,i,"friction",mxCreateDoubleScalar(0));
    101                 mxSetField(pmxa_array,i,"fill",mxCreateDoubleScalar(IceEnum)); //default is ice
    102                 mxSetField(pmxa_array,i,"fraction",mxCreateDoubleScalar(0)); //default is ice
    103                 mxSetField(pmxa_array,i,"fractionincrement",mxCreateDoubleScalar(0.1));
    104 
    105                 /*State: */
    106                 pmxa_array2= mxCreateDoubleMatrix(0,0,mxREAL);
    107                 mxSetM(pmxa_array2,1);
    108                 mxSetN(pmxa_array2,riftstruct->riftsnumpenaltypairs[i]);
    109                 mxSetPr(pmxa_array2,riftstruct->state[i]);
    110                 mexCallMATLAB( 1, &pmxa_array3, 1, &pmxa_array2, "transpose");
    111 
    112                 mxSetField(pmxa_array,i,"state",pmxa_array3);
    113         }
    114 
    115         plhs[5]=pmxa_array;
     49        WriteData(RIFTSTRUCT,riftstruct);
    11650
    11751        /*end module: */
  • issm/trunk-jpl/src/modules/TriMeshProcessRifts/TriMeshProcessRifts.h

    r13586 r13639  
    3939#define SEGMENTSOUT       (mxArray**)&plhs[3]
    4040#define SEGMENTMARKERSOUT (mxArray**)&plhs[4]
    41 #define RIFTSTRUCTOUT     (mxArray**)&plhs[5]
     41#define RIFTSTRUCT        (mxArray**)&plhs[5]
    4242#endif
    4343
     
    5555#define SEGMENTSOUT       output,3
    5656#define SEGMENTMARKERSOUT output,4
    57 #define RIFTSTRUCTOUT     output,5
     57#define RIFTSTRUCT        output,5
    5858#endif
    5959
Note: See TracChangeset for help on using the changeset viewer.