Changeset 4182
- Timestamp:
- 06/23/10 17:50:28 (15 years ago)
- Location:
- issm/trunk/src
- Files:
-
- 3 added
- 1 deleted
- 32 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/DataSet/DataSet.cpp
r4179 r4182 486 486 /*Go through a dataset, and for each object, report it cpu: */ 487 487 488 int i; 488 489 int rank; 489 490 int sid; 490 vector<Object*>::iterator object; 491 DofObject* dofobject=NULL; 492 493 for ( object=objects.begin() ; object < objects.end(); object++ ){ 494 495 /*Ok, this object is a node, ask which rank it has: */ 496 rank=(*object)->MyRank(); 497 498 /*Which id does it have: */ 499 dofobject=dynamic_cast<DofObject*>(*object); 500 sid=dofobject->Sid(); 501 491 492 for(i=0;i<this->Size();i++){ 493 Object* object=(Object*)this->GetObjectByOffset(i); 494 rank=object->MyRank(); 495 496 if (object->Enum()==NodeEnum){ 497 Node* node=(Node*)object; 498 sid=node->Sid(); 499 } 500 if (object->Enum()==VertexEnum){ 501 Vertex* vertex=(Vertex*)object; 502 sid=vertex->Sid(); 503 } 502 504 /*Plug rank into ranks, according to id: */ 503 505 ranks[sid]=rank; … … 914 916 MPI_Bcast(&node_max_sid,1,MPI_INT,0,MPI_COMM_WORLD); 915 917 max_sid=node_max_sid; 916 #endif 918 #endif 917 919 918 920 /*sid starts at 0*/ -
issm/trunk/src/c/EnumDefinitions/EnumDefinitions.h
r4166 r4182 264 264 JEnum, 265 265 PatchEnum, 266 TimeEnum, 266 267 /*}}}*/ 267 268 /*Convergence{{{1*/ -
issm/trunk/src/c/modules/OutputResultsx/MatlabWriteResults.cpp
r4167 r4182 19 19 void MatlabWriteResults(mxArray** pdataref, Parameters* parameters, DataSet* results){ 20 20 21 int i; 21 int i,j; 22 int count; 22 23 23 24 /*output: */ 24 25 mxArray* dataref=NULL; 25 26 mwSize nfields; 27 mwSize maxfields; 28 mwSize nsteps; 29 mwSize step; 26 30 const char** fnames=NULL; 31 int* enums=NULL; 32 int baseenum; 27 33 mwSize onebyone[2] = {1,1}; 28 34 mwSize ndim=2; 29 35 30 /*How many results? : */ 31 nfields=(mwSize)results->Size(); 32 33 /*recover names: */ 34 fnames=(const char**)xmalloc(nfields*sizeof(char*)); 36 /*How many time steps do we have? : */ 37 nsteps=0; 35 38 for(i=0;i<nfields;i++){ 36 39 ExternalResult* result=(ExternalResult*)results->GetObjectByOffset(i); 37 fnames[i]=result->GetResultName(); 40 step=result->GetStep(); 41 if(step>nsteps)nsteps=step; 38 42 } 43 onebyone[0]=nsteps; 44 45 /*How many field names do we have. First, figure out how many result types we have: */ 46 maxfields=(mwSize)results->Size(); 47 enums=(int*)xmalloc(maxfields*sizeof(int)); 48 for(i=0;i<maxfields;i++){ 49 ExternalResult* result=(ExternalResult*)results->GetObjectByOffset(i); 50 enums[i]=result->EnumType(); 51 } 52 /*Now, make result types unique: */ 53 for(i=0;i<maxfields;i++){ 54 if(enums[i]>=0){//if <0, it means this enum was found to replicate another one previously 55 baseenum=enums[i]; 56 /*is the baseenum repeated later on?:*/ 57 for(j=i+1;j<maxfields;j++){ 58 if (enums[j]==baseenum)enums[j]=-1; 59 } 60 } 61 else continue; 62 } 63 64 /*Now, go through enums, and whatever is not null is a non repeated field name: */ 65 nfields=0; 66 for(i=0;i<maxfields;i++)if(enums[i]>0)nfields++; 67 68 /*Add 1 field for time: */ 69 nfields++; 70 71 /*Fill the names of the structure field: */ 72 fnames=(const char**)xmalloc(nfields*sizeof(char*)); 73 count=0; 74 for(i=0;i<maxfields;i++){ 75 if (enums[i]>0){ 76 fnames[count]=EnumAsString(enums[i]); 77 count++; 78 } 79 } 80 /*don't forget the extra field "time":*/ 81 fnames[nfields-1]=EnumAsString(TimeEnum); 39 82 40 83 /*Initialize structure: */ -
issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.cpp
r4166 r4182 45 45 #endif 46 46 } 47 48 -
issm/trunk/src/c/modules/OutputResultsx/OutputResultsx.h
r4166 r4182 3 3 */ 4 4 5 #ifndef _OUTPUTRESULTS _H6 #define _OUTPUTRESULTS _H5 #ifndef _OUTPUTRESULTSX_H 6 #define _OUTPUTRESULTSX_H 7 7 8 8 #ifdef HAVE_CONFIG_H -
issm/trunk/src/c/objects/ExternalResults/BoolExternalResult.cpp
r4167 r4182 188 188 char* name=NULL; 189 189 name=this->GetResultName(); 190 mxSetField( dataref, 0, name,mxCreateDoubleScalar((double)value)); 190 191 mxSetField( dataref, this->step-1, name,mxCreateDoubleScalar((double)value)); 192 mxSetField( dataref, this->step-1, EnumAsString(TimeEnum),mxCreateDoubleScalar((double)this->time)); 191 193 } 192 194 #endif 193 195 /*}}}*/ 196 /*FUNCTION BoolExternalResult::GetStep(void);{{{1*/ 197 int BoolExternalResult::GetStep(void){ 198 199 return this->step; 200 } 201 /*}}}*/ -
issm/trunk/src/c/objects/ExternalResults/BoolExternalResult.h
r4166 r4182 70 70 void SetMatlabField(mxArray* dataref); 71 71 #endif 72 int GetStep(void); 72 73 /*}}}*/ 73 74 }; -
issm/trunk/src/c/objects/ExternalResults/DoubleExternalResult.cpp
r4167 r4182 184 184 char* name=NULL; 185 185 name=this->GetResultName(); 186 mxSetField( dataref, 0, name,mxCreateDoubleScalar(value)); 186 mxSetField( dataref,this->step-1, name,mxCreateDoubleScalar(value)); 187 mxSetField( dataref,this->step-1, EnumAsString(TimeEnum),mxCreateDoubleScalar((double)this->time)); 188 187 189 } 188 190 #endif 189 191 /*}}}*/ 192 /*FUNCTION DoubleExternalResult::GetStep(void);{{{1*/ 193 int DoubleExternalResult::GetStep(void){ 194 195 return this->step; 196 } 197 /*}}}*/ -
issm/trunk/src/c/objects/ExternalResults/DoubleExternalResult.h
r4166 r4182 70 70 void SetMatlabField(mxArray* dataref); 71 71 #endif 72 int GetStep(void); 72 73 /*}}}*/ 73 74 }; -
issm/trunk/src/c/objects/ExternalResults/DoubleMatExternalResult.cpp
r4167 r4182 231 231 232 232 /*set tranpose matrix inside the dataref structure: */ 233 mxSetField( dataref, 0, name,pfield2); 233 mxSetField( dataref, this->step-1, name,pfield2); 234 mxSetField( dataref, this->step-1, EnumAsString(TimeEnum),mxCreateDoubleScalar((double)this->time)); 235 236 237 234 238 } 235 239 #endif 236 240 /*}}}*/ 241 /*FUNCTION DoubleMatExternalResult::GetStep(void);{{{1*/ 242 int DoubleMatExternalResult::GetStep(void){ 243 244 return this->step; 245 } 246 /*}}}*/ -
issm/trunk/src/c/objects/ExternalResults/DoubleMatExternalResult.h
r4166 r4182 70 70 void SetMatlabField(mxArray* dataref); 71 71 #endif 72 int GetStep(void); 72 73 /*}}}*/ 73 74 }; -
issm/trunk/src/c/objects/ExternalResults/DoubleVecExternalResult.cpp
r4167 r4182 222 222 mxSetN(pfield,1); 223 223 mxSetPr(pfield,doublevec); 224 mxSetField( dataref, 0, name,pfield); 224 225 mxSetField( dataref, this->step-1, name,pfield); 226 mxSetField( dataref, this->step-1, EnumAsString(TimeEnum),mxCreateDoubleScalar((double)this->time)); 227 225 228 226 229 } 227 230 #endif 228 231 /*}}}*/ 232 /*FUNCTION DoubleVecExternalResult::GetStep(void);{{{1*/ 233 int DoubleVecExternalResult::GetStep(void){ 234 235 return this->step; 236 } 237 /*}}}*/ -
issm/trunk/src/c/objects/ExternalResults/DoubleVecExternalResult.h
r4166 r4182 69 69 void SetMatlabField(mxArray* dataref); 70 70 #endif 71 int GetStep(void); 71 72 /*}}}*/ 72 73 }; -
issm/trunk/src/c/objects/ExternalResults/ExternalResult.h
r4166 r4182 37 37 virtual void SetMatlabField(mxArray* dataref)=0; 38 38 #endif 39 virtual int GetStep(void)=0; 39 40 /*}}}*/ 40 41 }; -
issm/trunk/src/c/objects/ExternalResults/IntExternalResult.cpp
r4167 r4182 188 188 char* name=NULL; 189 189 name=this->GetResultName(); 190 mxSetField( dataref, 0, name,mxCreateDoubleScalar(value)); 190 191 mxSetField( dataref, this->step-1, name,mxCreateDoubleScalar(value)); 192 mxSetField( dataref, this->step-1, EnumAsString(TimeEnum),mxCreateDoubleScalar((double)this->time)); 193 191 194 } 192 195 #endif 193 196 /*}}}*/ 197 /*FUNCTION IntExternalResult::GetStep(void);{{{1*/ 198 int IntExternalResult::GetStep(void){ 199 200 return this->step; 201 } 202 /*}}}*/ -
issm/trunk/src/c/objects/ExternalResults/IntExternalResult.h
r4166 r4182 70 70 void SetMatlabField(mxArray* dataref); 71 71 #endif 72 int GetStep(void); 72 73 /*}}}*/ 73 74 }; -
issm/trunk/src/c/objects/ExternalResults/PetscVecExternalResult.cpp
r4166 r4182 256 256 mxSetPr(pfield,doublevec); 257 257 258 mxSetField( dataref, 0, name, pfield); 258 mxSetField( dataref, this->step-1, name, pfield); 259 mxSetField( dataref, this->step-1, EnumAsString(TimeEnum),mxCreateDoubleScalar((double)this->time)); 260 259 261 } 260 262 #endif 261 263 /*}}}*/ 264 /*FUNCTION PetscVecExternalResult::GetStep(void);{{{1*/ 265 int PetscVecExternalResult::GetStep(void){ 266 267 return this->step; 268 } 269 /*}}}*/ -
issm/trunk/src/c/objects/ExternalResults/PetscVecExternalResult.h
r4166 r4182 68 68 void SetMatlabField(mxArray* dataref); 69 69 #endif 70 int GetStep(void); 70 71 /*}}}*/ 71 72 }; -
issm/trunk/src/c/objects/ExternalResults/StringExternalResult.cpp
r4166 r4182 200 200 201 201 name=this->GetResultName(); 202 mxSetField( dataref, 0, name, mxCreateString(value)); 202 203 mxSetField( dataref, this->step-1, name, mxCreateString(value)); 204 mxSetField( dataref, this->step-1, EnumAsString(TimeEnum),mxCreateDoubleScalar((double)this->time)); 205 203 206 } 204 207 #endif 205 208 /*}}}*/ 209 /*FUNCTION StringExternalResult::GetStep(void);{{{1*/ 210 int StringExternalResult::GetStep(void){ 211 212 return this->step; 213 } 214 /*}}}*/ -
issm/trunk/src/c/objects/ExternalResults/StringExternalResult.h
r4166 r4182 69 69 void SetMatlabField(mxArray* dataref); 70 70 #endif 71 int GetStep(void); 71 72 /*}}}*/ 72 73 }; -
issm/trunk/src/m/solutions/bedslope.m
r4131 r4182 24 24 25 25 displaystring(verbose,'%s',['write results']); 26 OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters);26 md.results.bedslopecompute=OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters); 27 27 28 28 else -
issm/trunk/src/m/solutions/control_core.m
r4136 r4182 74 74 end 75 75 76 %Temporary saving every five iterations77 if mod(n+1,5)==0;78 displaystring(verbose,'\n%s',[' saving temporary results...']);79 controlrestart(femmmodel,J);80 end81 82 76 end 83 77 -
issm/trunk/src/m/solutions/diagnostic.m
r4131 r4182 34 34 35 35 displaystring(verbose,'%s',['write results']); 36 OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters);36 md.results.diagnostic=OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters); 37 37 38 38 else -
issm/trunk/src/m/solutions/prognostic.m
r4135 r4182 25 25 26 26 displaystring(verbose,'%s',['write results']); 27 OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters);27 md.results.prognostic=OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters); 28 28 else 29 29 %launch dakota driver for diagnostic core solution -
issm/trunk/src/m/solutions/prognostic2.m
r4135 r4182 24 24 25 25 displaystring(verbose,'%s',['write results']); 26 OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters);26 md.results.prognostic2=OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters); 27 27 else 28 28 %launch dakota driver for diagnostic core solution -
issm/trunk/src/m/solutions/steadystate.m
r4135 r4182 35 35 36 36 displaystring(verbose,'%s',['write results']); 37 OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters);37 md.results.steadystate=OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters); 38 38 39 39 else -
issm/trunk/src/m/solutions/surfaceslope.m
r4131 r4182 24 24 25 25 displaystring(verbose,'%s',['write results']); 26 OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters);26 md.results.surfaceslopecompute=OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters); 27 27 28 28 else -
issm/trunk/src/m/solutions/thermal.m
r4135 r4182 24 24 25 25 displaystring(verbose,'%s',['write results']); 26 OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters);26 md.results.thermal=OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters); 27 27 else 28 28 %launch dakota driver for diagnostic core solution -
issm/trunk/src/m/solutions/transient2d.m
r4131 r4182 23 23 24 24 displaystring(verbose,'%s',['write results']); 25 OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters);25 md.results.transient2d=OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters); 26 26 27 27 else -
issm/trunk/src/m/solutions/transient3d.m
r4131 r4182 22 22 23 23 displaystring(verbose,'%s',['write results']); 24 OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters);24 md.results.transient3d=OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters); 25 25 26 26 else -
issm/trunk/src/m/solutions/transient3d_core.m
r4136 r4182 50 50 femmodel.elements=InputToResult(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,MeltingEnum,step,time); 51 51 52 %Save temporary results53 if mod(step,5)==0,54 displaystring(verbose,'\n%s',['saving temporary results...']);55 OutputResults(femmodel.elements, femmodel.loads, femmodel.nodes, femmodel.vertices, femmodel.materials, femmodel.parameters);56 end57 52 end 58 53 -
issm/trunk/src/mex/Makefile.am
r4171 r4182 43 43 Orth\ 44 44 OutputRifts\ 45 OutputResults\ 45 46 PenaltyConstraints\ 46 47 PenaltySystemMatrices\ … … 208 209 OutputRifts/OutputRifts.h 209 210 211 OutputResults_SOURCES = OutputResults/OutputResults.cpp\ 212 OutputResults/OutputResults.h 213 210 214 PenaltyConstraints_SOURCES = PenaltyConstraints/PenaltyConstraints.cpp\ 211 215 PenaltyConstraints/PenaltyConstraints.h
Note:
See TracChangeset
for help on using the changeset viewer.