Changeset 4166
- Timestamp:
- 06/23/10 12:23:55 (15 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 2 deleted
- 26 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/EnumDefinitions/EnumAsString.cpp
r4158 r4166 126 126 case RgbEnum : return "Rgb"; 127 127 case SpcEnum : return "Spc"; 128 case DofVecEnum : return "DofVec";129 128 case GeographyEnum : return "Geography"; 130 129 case IceSheetEnum : return "IceSheet"; -
issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
r4143 r4166 148 148 /*Spc: */ 149 149 SpcEnum, 150 /*DofVec: */151 DofVecEnum,152 150 /*}}}*/ 153 151 /*Geography {{{1*/ -
issm/trunk/src/c/EnumDefinitions/StringAsEnum.cpp
r4158 r4166 124 124 else if (strcmp(name,"Rgb")==0) return RgbEnum; 125 125 else if (strcmp(name,"Spc")==0) return SpcEnum; 126 else if (strcmp(name,"DofVec")==0) return DofVecEnum;127 126 else if (strcmp(name,"Geography")==0) return GeographyEnum; 128 127 else if (strcmp(name,"IceSheet")==0) return IceSheetEnum; -
issm/trunk/src/c/Makefile.am
r4157 r4166 81 81 ./objects/FemModel.cpp\ 82 82 ./objects/Material.h\ 83 ./objects/DofVec.h\84 ./objects/DofVec.cpp\85 83 ./objects/Load.h\ 86 84 ./objects/OptArgs.h\ … … 385 383 ./modules/OutputResultsx/OutputResultsx.cpp\ 386 384 ./modules/OutputResultsx/ElementResultsToPatch.cpp\ 385 ./modules/OutputResultsx/MatlabWriteResults.cpp\ 387 386 ./modules/Dux/Dux.h\ 388 387 ./modules/Dux/Dux.cpp\ … … 606 605 ./objects/FemModel.cpp\ 607 606 ./objects/Material.h\ 608 ./objects/DofVec.h\609 ./objects/DofVec.cpp\610 607 ./objects/Load.h\ 611 608 ./objects/SolverEnum.h\ … … 907 904 ./modules/OutputResultsx/OutputResultsx.cpp\ 908 905 ./modules/OutputResultsx/ElementResultsToPatch.cpp\ 906 ./modules/OutputResultsx/FileWriteResults.cpp\ 909 907 ./modules/Dux/Dux.h\ 910 908 ./modules/Dux/Dux.cpp\ -
issm/trunk/src/c/io/WriteData.cpp
r3961 r4166 97 97 *pdataref=dataref; 98 98 99 }100 /*}}}*/101 /*FUNCTION WriteData(mxArray** pdataref,DofVec* dofvec){{{1*/102 void WriteData(mxArray** pdataref,DofVec* dofvec){103 104 mxArray* mxvector=NULL;105 mxArray* structdataref=NULL;106 mxArray* dataref=NULL;107 108 int nfields=4;109 const char* fnames[nfields];110 mwSize onebyone[2] = {1,1};111 mwSize ndim=2;112 113 fnames[0] = "name";114 fnames[1] = "numdofs";115 fnames[2] = "numentries";116 fnames[3] = "vector";117 118 if(dofvec){119 120 /*call toolkit routine: */121 if(dofvec->vector)PetscVectorToMatlabVector(&mxvector,dofvec->vector);122 else mxvector=mxCreateDoubleMatrix(0,0,mxREAL);123 124 /*use the mxvector to create a dofvec object: */125 structdataref=mxCreateStructArray( ndim,onebyone,nfields,fnames);126 127 mxSetField( structdataref, 0, "name",mxCreateString(dofvec->name));128 mxSetField( structdataref, 0, "numdofs",mxCreateDoubleScalar(dofvec->numdofs));129 mxSetField( structdataref, 0, "numentries",mxCreateDoubleScalar(dofvec->numentries));130 mxSetField( structdataref, 0, "vector",mxvector);131 132 133 /*transform structure into dofvec class: */134 mexCallMATLAB( 1, &dataref, 1, &structdataref, "dofvec");135 }136 else{137 dataref = mxCreateDoubleMatrix(0,0,mxREAL);138 }139 *pdataref=dataref;140 99 } 141 100 /*}}}*/ -
issm/trunk/src/c/io/io.h
r3961 r4166 25 25 void WriteData(mxArray** pdataref,double scalar); 26 26 void WriteData(mxArray** pdataref,char* string); 27 void WriteData(mxArray** pdataref,DofVec* vector);28 27 void WriteData(mxArray** pdataref,BamgMesh* bm); 29 28 void WriteData(mxArray** pdataref,BamgGeom* bg); -
issm/trunk/src/c/modules/OutputResultsx/MatlabWriteResults.cpp
r4163 r4166 12 12 13 13 #include <mex.h> 14 #include ". /io.h"15 #include "../ objects/objects.h"16 #include "../ shared/shared.h"17 #include "../ include/include.h"14 #include "../../io/io.h" 15 #include "../../objects/objects.h" 16 #include "../../shared/shared.h" 17 #include "../../include/include.h" 18 18 19 19 void MatlabWriteResults(mxArray** pdataref, Parameters* parameters, DataSet* results){ 20 20 21 extern int my_rank; 22 char *filename = NULL; 23 FILE *fid = NULL; 21 int i; 24 22 25 //Recover file name: 26 parameters->FindParam(&filename,OutputFileNameEnum); 23 /*output: */ 24 mxArray* dataref=NULL; 25 mwSize nfields; 26 const char** fnames=NULL; 27 mwSize onebyone[2] = {1,1}; 28 mwSize ndim=2; 27 29 28 / /Open filename for writing only on cpu 029 if(my_rank==0)fid=pfopen(filename,"wb");30 /*How many results? : */ 31 nfields=(mwSize)results->Size(); 30 32 31 for(i=0;i<results->Size();i++){ 33 /*recover names: */ 34 fnames=(const char**)xmalloc(nfields*sizeof(char*)); 35 for(i=0;i<nfields;i++){ 32 36 ExternalResult* result=(ExternalResult*)results->GetObjectByOffset(i); 33 34 /*write result to disk: */ 35 result->WriteData(fid); 37 fnames[i]=results->GetResultName(); 36 38 } 37 39 38 /* Close file: */39 if(my_rank==0)pfclose(fid,filename);40 /*Initialize structure: */ 41 dataref=mxCreateStructArray( ndim,onebyone,nfields,fnames); 40 42 41 /*Free ressources:*/ 42 xfree((void**)&filename); 43 /*Fill each field: */ 44 for(i=0;i<nfields;i++){ 45 46 ExternalResult* result=(ExternalResult*)results->GetObjectByOffset(i); 47 result->SetMatlabField(dataref); 48 } 49 50 /*Assign output pointers:*/ 51 *pdataref=dataref; 52 43 53 } 44 54 #endif -
issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.cpp
r4163 r4166 40 40 /*Write data to matlab structure or filename: */ 41 41 #ifdef _SERIAL_ 42 MatlabWriteResults( );42 MatlabWriteResults(pdataref,parameters,results); 43 43 #else 44 FileWriteResults( );44 FileWriteResults(parameters,results); 45 45 #endif 46 46 } -
issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.h
r4163 r4166 16 16 17 17 #ifdef _SERIAL_ 18 #include <mex.h> 18 19 void OutputResultsx(mxArray** pdataref, DataSet* elements, DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials, Parameters* parameters,DataSet* results); 20 void MatlabWriteResults(mxArray** pdataref, Parameters* parameters, DataSet* results); 19 21 #else 20 22 void OutputResultsx(DataSet* elements, DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials, Parameters* parameters,DataSet* results); 23 void FileWriteResults(Parameters* parameters, DataSet* results); 21 24 #endif 22 25 23 26 /* local prototypes: */ 24 27 void ElementResultsToPatch(DataSet* elements, DataSet* loads, DataSet* nodes, DataSet* vertices, DataSet* materials, Parameters* parameters,DataSet* results); 25 void FileWriteResults(Parameters* parameters, DataSet* results);26 void MatlabWriteResults(mxArray** pdataref, Parameters* parameters, DataSet* results);27 28 28 29 #endif /* _OUTPUTRESULTS_H */ -
issm/trunk/src/c/objects/ExternalResults/BoolExternalResult.cpp
r4143 r4166 177 177 } 178 178 /*}}}1*/ 179 /*FUNCTION BoolExternalResult::GetResultName(void); {{{1*/ 180 char* BoolExternalResult::GetResultName(void){ 181 return EnumAsString(this->enum_type); 182 } 183 /*}}}*/ 184 /*FUNCTION BoolExternalResult::SetMatlabField(mxArray* dataref);{{{1*/ 185 #ifdef _SERIAL_ 186 char* BoolExternalResult::SetMatlabField(mxArray* dataref){ 187 188 char* name=NULL; 189 name=this->GetResultName(); 190 mxSetField( dataref, 0, name,mxCreateDoubleScalar((double)value)); 191 } 192 #endif 193 /*}}}*/ -
issm/trunk/src/c/objects/ExternalResults/BoolExternalResult.h
r4139 r4166 66 66 int EnumType(){return enum_type;} 67 67 void WriteData(FILE* fid); 68 char* GetResultName(void); 69 #ifdef _SERIAL_ 70 void SetMatlabField(mxArray* dataref); 71 #endif 68 72 /*}}}*/ 69 73 }; -
issm/trunk/src/c/objects/ExternalResults/DoubleExternalResult.cpp
r4143 r4166 173 173 } 174 174 /*}}}1*/ 175 /*FUNCTION DoubleExternalResult::GetResultName(void); {{{1*/ 176 char* DoubleExternalResult::GetResultName(void){ 177 return EnumAsString(this->enum_type); 178 } 179 /*}}}*/ 180 /*FUNCTION DoubleExternalResult::SetMatlabField(mxArray* dataref);{{{1*/ 181 #ifdef _SERIAL_ 182 char* DoubleExternalResult::SetMatlabField(mxArray* dataref){ 183 184 char* name=NULL; 185 name=this->GetResultName(); 186 mxSetField( dataref, 0, name,mxCreateDoubleScalar(value)); 187 } 188 #endif 189 /*}}}*/ -
issm/trunk/src/c/objects/ExternalResults/DoubleExternalResult.h
r4139 r4166 66 66 int EnumType(){return enum_type;} 67 67 void WriteData(FILE* fid); 68 char* GetResultName(void); 69 #ifdef _SERIAL_ 70 void SetMatlabField(mxArray* dataref); 71 #endif 68 72 /*}}}*/ 69 73 }; -
issm/trunk/src/c/objects/ExternalResults/DoubleMatExternalResult.cpp
r4143 r4166 199 199 } 200 200 /*}}}1*/ 201 /*FUNCTION DoubleMatExternalResult::GetResultName(void); {{{1*/ 202 char* DoubleMatExternalResult::GetResultName(void){ 203 return EnumAsString(this->enum_type); 204 } 205 /*}}}*/ 206 /*FUNCTION DoubleMatExternalResult::SetMatlabField(mxArray* dataref);{{{1*/ 207 #ifdef _SERIAL_ 208 char* DoubleMatExternalResult::SetMatlabField(mxArray* dataref){ 209 210 mxArray* pfield=NULL; 211 mxArray* pfield2=NULL; 212 double* doublemat=NULL; 213 int M,N; 214 char* name=NULL; 215 double* doublemat=NULL; 216 217 /*Make a copy of the value, to be used by matlab: */ 218 doublemat=(double*)xmalloc(M*N*sizeof(double)); 219 memcpy(doublemat,values,M*N*sizeof(double)); 220 221 /*recover name: */ 222 name=this->GetResultName(); 223 224 /*create matlab matrix: */ 225 pfield=mxCreateDoubleMatrix(0,0,mxREAL); 226 mxSetM(pfield,N); 227 mxSetN(pfield,M); 228 mxSetPr(pfield,doublemat); 229 230 /*transpose the matrix, from c to matlab format */ 231 mexCallMATLAB(1,&pfield2, 1, &pfield, "'"); 232 233 /*set tranpose matrix inside the dataref structure: */ 234 mxSetField( dataref, 0, name,pfield2); 235 } 236 #endif 237 /*}}}*/ -
issm/trunk/src/c/objects/ExternalResults/DoubleMatExternalResult.h
r4139 r4166 66 66 int EnumType(){return enum_type;} 67 67 void WriteData(FILE* fid); 68 char* GetResultName(void); 69 #ifdef _SERIAL_ 70 void SetMatlabField(mxArray* dataref); 71 #endif 68 72 /*}}}*/ 69 73 }; -
issm/trunk/src/c/objects/ExternalResults/DoubleVecExternalResult.cpp
r4143 r4166 195 195 } 196 196 /*}}}1*/ 197 /*FUNCTION DoubleVecExternalResult::GetResultName(void); {{{1*/ 198 char* DoubleVecExternalResult::GetResultName(void){ 199 return EnumAsString(this->enum_type); 200 } 201 /*}}}*/ 202 /*FUNCTION DoubleVecExternalResult::SetMatlabField(mxArray* dataref);{{{1*/ 203 #ifdef _SERIAL_ 204 char* DoubleVecExternalResult::SetMatlabField(mxArray* dataref){ 205 206 mxArray* pfield=NULL; 207 double* doublemat=NULL; 208 int M; 209 char* name=NULL; 210 double* doublevec=NULL; 211 212 /*Make a copy of the value, to be used by matlab: */ 213 doublevec=(double*)xmalloc(M*sizeof(double)); 214 memcpy(doublevec,values,M*sizeof(double)); 215 216 /*recover name: */ 217 name=this->GetResultName(); 218 219 /*create matlab matrix: */ 220 pfield=mxCreateDoubleMatrix(0,0,mxREAL); 221 mxSetM(pfield,M); 222 mxSetN(pfield,1); 223 mxSetPr(pfield,doublevec); 224 mxSetField( dataref, 0, name,pfield); 225 226 } 227 #endif 228 /*}}}*/ -
issm/trunk/src/c/objects/ExternalResults/DoubleVecExternalResult.h
r4139 r4166 65 65 int EnumType(){return enum_type;} 66 66 void WriteData(FILE* fid); 67 char* GetResultName(void); 68 #ifdef _SERIAL_ 69 void SetMatlabField(mxArray* dataref); 70 #endif 67 71 /*}}}*/ 68 72 }; -
issm/trunk/src/c/objects/ExternalResults/ExternalResult.h
r4149 r4166 33 33 virtual int EnumType()=0; 34 34 virtual void WriteData(FILE* fid)=0; 35 virtual char* GetResultName(void)=0; 36 #ifdef _SERIAL_ 37 virtual void SetMatlabField(mxArray* dataref)=0; 38 #endif 35 39 /*}}}*/ 36 40 }; -
issm/trunk/src/c/objects/ExternalResults/IntExternalResult.cpp
r4143 r4166 177 177 } 178 178 /*}}}1*/ 179 /*FUNCTION IntExternalResult::GetResultName(void); {{{1*/ 180 char* IntExternalResult::GetResultName(void){ 181 return EnumAsString(this->enum_type); 182 } 183 /*}}}*/ 184 /*FUNCTION IntExternalResult::SetMatlabField(mxArray* dataref);{{{1*/ 185 #ifdef _SERIAL_ 186 char* IntExternalResult::SetMatlabField(mxArray* dataref){ 187 188 char* name=NULL; 189 name=this->GetResultName(); 190 mxSetField( dataref, 0, name,mxCreateIntScalar(value)); 191 } 192 #endif 193 /*}}}*/ -
issm/trunk/src/c/objects/ExternalResults/IntExternalResult.h
r4139 r4166 66 66 int EnumType(){return enum_type;} 67 67 void WriteData(FILE* fid); 68 char* GetResultName(void); 69 #ifdef _SERIAL_ 70 void SetMatlabField(mxArray* dataref); 71 #endif 68 72 /*}}}*/ 69 73 }; -
issm/trunk/src/c/objects/ExternalResults/PetscVecExternalResult.cpp
r4143 r4166 233 233 } 234 234 /*}}}1*/ 235 /*FUNCTION PetscVecExternalResult::GetResultName(void); {{{1*/ 236 char* PetscVecExternalResult::GetResultName(void){ 237 return EnumAsString(this->enum_type); 238 } 239 /*}}}*/ 240 /*FUNCTION PetscVecExternalResult::SetMatlabField(mxArray* dataref);{{{1*/ 241 #ifdef _SERIAL_ 242 void PetscVecExternalResult::SetMatlabField(mxArray* dataref){ 243 244 mxArray* pfield=NULL; 245 char* name=NULL; 246 double* doublevec=NULL; 247 int M; 248 249 VecToMPISerial(&doublevec,value); 250 VecGetSize(value,&M); 251 name=this->GetResultName(); 252 253 pfield=mxCreateDoubleMatrix(0,0,mxREAL); 254 mxSetM(pfield,M); 255 mxSetN(pfield,1); 256 mxSetPr(pfield,doublevec); 257 258 mxSetField( dataref, 0, name, pfield); 259 } 260 #endif 261 /*}}}*/ -
issm/trunk/src/c/objects/ExternalResults/PetscVecExternalResult.h
r4139 r4166 64 64 int EnumType(){return enum_type;} 65 65 void WriteData(FILE* fid); 66 char* GetResultName(void); 67 #ifdef _SERIAL_ 68 void SetMatlabField(mxArray* dataref); 69 #endif 66 70 /*}}}*/ 67 71 }; -
issm/trunk/src/c/objects/ExternalResults/StringExternalResult.cpp
r4139 r4166 188 188 } 189 189 /*}}}1*/ 190 /*FUNCTION StringExternalResult::GetResultName(void); {{{1*/ 191 char* StringExternalResult::GetResultName(void){ 192 return EnumAsString(this->enum_type); 193 } 194 /*}}}*/ 195 /*FUNCTION StringExternalResult::SetMatlabField(mxArray* dataref);{{{1*/ 196 #ifdef _SERIAL_ 197 void StringExternalResult::SetMatlabField(mxArray* dataref){ 198 199 char* name=NULL; 200 201 name=this->GetResultName(); 202 mxSetField( dataref, 0, name, mxCreateString(value)); 203 } 204 #endif 205 /*}}}*/ -
issm/trunk/src/c/objects/ExternalResults/StringExternalResult.h
r4139 r4166 65 65 int EnumType(){return enum_type;} 66 66 void WriteData(FILE* fid); 67 char* GetResultName(void); 68 #ifdef _SERIAL_ 69 void SetMatlabField(mxArray* dataref); 70 #endif 67 71 /*}}}*/ 68 72 }; -
issm/trunk/src/c/objects/FemModel.h
r4055 r4166 12 12 class DataSet; 13 13 class Parameters; 14 class DofVec;15 14 class NodeSets; 16 15 /*}}}*/ … … 37 36 DataSet* results; //results that cannot be fit into the elements (such as one time constants, arrays, strings, etc ...) 38 37 39 DofVec*partition; //one partitioning for all elements40 DofVec*tpartition;38 Vec partition; //one partitioning for all elements 39 Vec tpartition; 41 40 42 41 //multiple sets of matrices/vectors for each analysis_type. m stands for multiple -
issm/trunk/src/c/objects/objects.h
r4143 r4166 92 92 #include "./OptArgs.h" 93 93 #include "./OptPars.h" 94 #include "./DofVec.h"95 94 96 95 /*Bamg: */
Note:
See TracChangeset
for help on using the changeset viewer.