Changeset 13639
- Timestamp:
- 10/12/12 11:35:19 (12 years ago)
- Location:
- issm/trunk-jpl/src/modules/TriMeshProcessRifts
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/modules/TriMeshProcessRifts/TriMeshProcessRifts.cpp
r13634 r13639 39 39 40 40 /*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); 43 42 44 43 /*Output : */ … … 48 47 WriteData(SEGMENTSOUT,segments,num_seg,3); 49 48 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); 116 50 117 51 /*end module: */ -
issm/trunk-jpl/src/modules/TriMeshProcessRifts/TriMeshProcessRifts.h
r13586 r13639 39 39 #define SEGMENTSOUT (mxArray**)&plhs[3] 40 40 #define SEGMENTMARKERSOUT (mxArray**)&plhs[4] 41 #define RIFTSTRUCT OUT(mxArray**)&plhs[5]41 #define RIFTSTRUCT (mxArray**)&plhs[5] 42 42 #endif 43 43 … … 55 55 #define SEGMENTSOUT output,3 56 56 #define SEGMENTMARKERSOUT output,4 57 #define RIFTSTRUCT OUToutput,557 #define RIFTSTRUCT output,5 58 58 #endif 59 59
Note:
See TracChangeset
for help on using the changeset viewer.