Changeset 13638


Ignore:
Timestamp:
10/12/12 11:33:30 (12 years ago)
Author:
Mathieu Morlighem
Message:

NEW: added WriteData for riftstruct

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  
    292292}
    293293/*}}}*/
     294/*FUNCTION WriteData(mxArray** pdataref,RiftStruct* riftstruct){{{*/
     295void 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/*}}}*/
    294341
    295342/*Toolkit*/
     
    306353}
    307354/*}}}*/
     355/*FUNCTION SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int M,int N,double* fieldpointer){{{*/
     356void 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){{{*/
     368void 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){{{*/
     380void 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  
    2929void WriteData(mxArray** pdataref,BamgGeom* bamggeom);
    3030void WriteData(mxArray** pdataref,BamgMesh* bamgmesh);
     31void WriteData(mxArray** pdataref,RiftStruct* riftstruct);
    3132
    3233void FetchData(double** pmatrix,int* pM,int *pN,const mxArray* dataref);
     
    6263mxArray* mxGetAssignedField(const mxArray* pmxa_array,int number, const char* field);
    6364void SetStructureField(mxArray* dataref,const char* fieldname,int fieldrows,int fieldcols,double* fieldpointer);
     65void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int fieldrows,int fieldcols,double* fieldpointer);
     66void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,int field);
     67void SetStructureFieldi(mxArray* dataref,int i,const char* fieldname,double field);
    6468int CheckNumMatlabArguments(int nlhs,int NLHS, int nrhs,int NRHS, const char* THISFUNCTION, void (*function)( void ));
    6569
Note: See TracChangeset for help on using the changeset viewer.