Changeset 13638
- Timestamp:
- 10/12/12 11:33:30 (12 years ago)
- Location:
- issm/trunk-jpl/src/c/matlab/io
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/matlab/io/WriteMatlabData.cpp
r13622 r13638 292 292 } 293 293 /*}}}*/ 294 /*FUNCTION WriteData(mxArray** pdataref,RiftStruct* riftstruct){{{*/ 295 void WriteData(mxArray** pdataref,RiftStruct* riftstruct){ 296 297 /*Intermediary*/ 298 int i; 299 mxArray *dataref = NULL; 300 const int numfields = 10; 301 const char *fnames[numfields]; 302 mwSize ndim = 2; 303 mwSize dimensions[2] = {1,1}; 304 305 /*Initialize field names*/ 306 i=0; 307 fnames[i++] = "numsegs"; 308 fnames[i++] = "segments"; 309 fnames[i++] = "pairs"; 310 fnames[i++] = "tips"; 311 fnames[i++] = "penaltypairs"; 312 fnames[i++] = "fill"; 313 fnames[i++] = "friction"; 314 fnames[i++] = "fraction"; 315 fnames[i++] = "fractionincrement"; 316 fnames[i++] = "state"; 317 _assert_(i==numfields); 318 319 /*Initialize matlab structure of dimension numrifts*/ 320 dimensions[0]=riftstruct->numrifts; 321 dataref=mxCreateStructArray(ndim,dimensions,numfields,fnames); 322 323 /*set each matlab each field*/ 324 for(int i=0;i<riftstruct->numrifts;i++){ 325 SetStructureFieldi(dataref,i,"numsegs" ,riftstruct->riftsnumsegments[i]); 326 SetStructureFieldi(dataref,i,"segments" ,riftstruct->riftsnumsegments[i] ,3,riftstruct->riftssegments[i]); 327 SetStructureFieldi(dataref,i,"pairs" ,riftstruct->riftsnumpairs[i] ,2,riftstruct->riftspairs[i]); 328 SetStructureFieldi(dataref,i,"tips" ,1 ,2,&riftstruct->riftstips[2*i]); 329 SetStructureFieldi(dataref,i,"penaltypairs" ,riftstruct->riftsnumpenaltypairs[i],7,riftstruct->riftspenaltypairs[i]); 330 SetStructureFieldi(dataref,i,"friction" ,0); 331 SetStructureFieldi(dataref,i,"fill" ,IceEnum); 332 SetStructureFieldi(dataref,i,"fraction" ,0.); 333 SetStructureFieldi(dataref,i,"fractionincrement",0.1); 334 SetStructureFieldi(dataref,i,"state" ,riftstruct->riftsnumpenaltypairs[i],1,riftstruct->state[i]); 335 } 336 337 /*Assign output*/ 338 *pdataref=dataref; 339 } 340 /*}}}*/ 294 341 295 342 /*Toolkit*/ … … 306 353 } 307 354 /*}}}*/ 355 /*FUNCTION SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int M,int N,double* fieldpointer){{{*/ 356 void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int M,int N,double* fieldpointer){ 357 358 mxArray* field = NULL; 359 360 /*Convert field*/ 361 WriteData(&field,fieldpointer,M,N); 362 363 /*Assign to structure*/ 364 mxSetField(dataref,i,fieldname,field); 365 } 366 /*}}}*/ 367 /*FUNCTION SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int field){{{*/ 368 void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int fieldin){ 369 370 mxArray* field = NULL; 371 372 /*Convert field*/ 373 WriteData(&field,fieldin); 374 375 /*Assign to structure*/ 376 mxSetField(dataref,i,fieldname,field); 377 } 378 /*}}}*/ 379 /*FUNCTION SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,double field){{{*/ 380 void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,double fieldin){ 381 382 mxArray* field = NULL; 383 384 /*Convert field*/ 385 WriteData(&field,fieldin); 386 387 /*Assign to structure*/ 388 mxSetField(dataref,i,fieldname,field); 389 } 390 /*}}}*/ -
issm/trunk-jpl/src/c/matlab/io/matlabio.h
r13447 r13638 29 29 void WriteData(mxArray** pdataref,BamgGeom* bamggeom); 30 30 void WriteData(mxArray** pdataref,BamgMesh* bamgmesh); 31 void WriteData(mxArray** pdataref,RiftStruct* riftstruct); 31 32 32 33 void FetchData(double** pmatrix,int* pM,int *pN,const mxArray* dataref); … … 62 63 mxArray* mxGetAssignedField(const mxArray* pmxa_array,int number, const char* field); 63 64 void SetStructureField(mxArray* dataref,const char* fieldname,int fieldrows,int fieldcols,double* fieldpointer); 65 void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int fieldrows,int fieldcols,double* fieldpointer); 66 void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int field); 67 void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,double field); 64 68 int CheckNumMatlabArguments(int nlhs,int NLHS, int nrhs,int NRHS, const char* THISFUNCTION, void (*function)( void )); 65 69
Note:
See TracChangeset
for help on using the changeset viewer.