Changeset 16474
- Timestamp:
- 10/21/13 09:02:04 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 15 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/ElementResults/BoolElementResult.cpp
r16470 r16474 68 68 69 69 /*ElementResult management*/ 70 /*FUNCTION BoolElementResult:: InstanceEnum{{{*/71 int BoolElementResult::InstanceEnum(void){70 /*FUNCTION BoolElementResult::GetResultName{{{*/ 71 char* BoolElementResult::GetResultName(void){ 72 72 73 return this->enum_type; 73 char* output = NULL; 74 EnumToStringx(&output,this->enum_type); 75 return output; 74 76 75 77 } -
issm/trunk-jpl/src/c/classes/ElementResults/BoolElementResult.h
r16470 r16474 39 39 /*}}}*/ 40 40 /*BoolElementResult management: {{{*/ 41 int InstanceEnum();42 void GetVectorFromResults(Vector<IssmDouble>* vector,int* doflist,int* connectivitylist,int numdofs);43 void GetElementVectorFromResults(Vector<IssmDouble>* vector,int dof);41 char* GetResultName(); 42 void GetVectorFromResults(Vector<IssmDouble>* vector,int* doflist,int* connectivitylist,int numdofs); 43 void GetElementVectorFromResults(Vector<IssmDouble>* vector,int dof); 44 44 /*}}}*/ 45 45 }; -
issm/trunk-jpl/src/c/classes/ElementResults/DoubleElementResult.cpp
r16470 r16474 68 68 69 69 /*ElementResult management*/ 70 /*FUNCTION DoubleElementResult:: InstanceEnum{{{*/71 int DoubleElementResult::InstanceEnum(void){70 /*FUNCTION DoubleElementResult::GetResultName{{{*/ 71 char* DoubleElementResult::GetResultName(void){ 72 72 73 return this->enum_type; 73 char* output = NULL; 74 EnumToStringx(&output,this->enum_type); 75 return output; 74 76 75 77 } -
issm/trunk-jpl/src/c/classes/ElementResults/DoubleElementResult.h
r16470 r16474 39 39 40 40 /*DoubleElementResult management*/ 41 int InstanceEnum();41 char* GetResultName(); 42 42 void GetVectorFromResults(Vector<IssmDouble>* vector,int* doflist,int* connectivitylist,int numdofs); 43 43 void GetElementVectorFromResults(Vector<IssmDouble>* vector,int dof); -
issm/trunk-jpl/src/c/classes/ElementResults/ElementResult.h
r16470 r16474 18 18 virtual int GetStep(void) = 0; 19 19 virtual int NumberOfNodalValues(void) = 0; 20 virtual int InstanceEnum() = 0;20 virtual char* GetResultName() = 0; 21 21 virtual void GetVectorFromResults(Vector <IssmDouble> *vector,int*doflist,int*connectivitylist,int numdof)=0; 22 22 virtual void GetElementVectorFromResults(Vector <IssmDouble> *vector,int dof)=0; -
issm/trunk-jpl/src/c/classes/ElementResults/PentaP1ElementResult.cpp
r16470 r16474 71 71 72 72 /*ElementResult management*/ 73 /*FUNCTION PentaP1ElementResult:: InstanceEnum{{{*/74 int PentaP1ElementResult::InstanceEnum(void){73 /*FUNCTION PentaP1ElementResult::GetResultName{{{*/ 74 char* PentaP1ElementResult::GetResultName(void){ 75 75 76 return this->enum_type; 76 char* output = NULL; 77 EnumToStringx(&output,this->enum_type); 78 return output; 77 79 78 80 } -
issm/trunk-jpl/src/c/classes/ElementResults/PentaP1ElementResult.h
r16470 r16474 38 38 /*}}}*/ 39 39 /*PentaP1ElementResult management: {{{*/ 40 int InstanceEnum();40 char* GetResultName(); 41 41 void GetVectorFromResults(Vector<IssmDouble>* vector,int* doflist,int* connectivitylist,int numdofs); 42 42 void GetElementVectorFromResults(Vector<IssmDouble>* vector,int dof); -
issm/trunk-jpl/src/c/classes/ElementResults/TriaP1ElementResult.cpp
r16470 r16474 70 70 71 71 /*ElementResult management*/ 72 /*FUNCTION TriaP1ElementResult:: InstanceEnum{{{*/73 int TriaP1ElementResult::InstanceEnum(void){72 /*FUNCTION TriaP1ElementResult::GetResultName{{{*/ 73 char* TriaP1ElementResult::GetResultName(void){ 74 74 75 return this->enum_type; 75 char* output = NULL; 76 EnumToStringx(&output,this->enum_type); 77 return output; 76 78 77 79 } -
issm/trunk-jpl/src/c/classes/ElementResults/TriaP1ElementResult.h
r16470 r16474 37 37 /*}}}*/ 38 38 /*TriaP1ElementResult management: {{{*/ 39 int InstanceEnum();39 char* GetResultName(); 40 40 void GetVectorFromResults(Vector<IssmDouble>* vector,int* doflist,int* connectivitylist,int numdofs); 41 41 void GetElementVectorFromResults(Vector<IssmDouble>* vector,int dof); -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r16470 r16474 1661 1661 /*Get result*/ 1662 1662 ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(offset); 1663 if(elementresult->InstanceEnum()!=enum_in){1664 _error_("Results of offset "<<offset<<" is "<<EnumToStringx(elementresult->InstanceEnum())<<" when "<<EnumToStringx(enum_in)<<" was expected");1665 }1666 1663 if(interp==P1Enum){ 1667 1664 int vertexpidlist[NUMVERTICES]; … … 2808 2805 for(int i=0;i<this->results->Size();i++){ 2809 2806 ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(i); 2810 resultsenums[i]= elementresult->InstanceEnum();2807 resultsenums[i]=StringToEnumx(elementresult->GetResultName()); 2811 2808 resultstimes[i]=elementresult->GetTime(); 2812 2809 resultssteps[i]=elementresult->GetStep(); -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r16470 r16474 1554 1554 /*Get result*/ 1555 1555 ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(offset); 1556 if(elementresult->InstanceEnum()!=enum_in){1557 _error_("Results of offset "<<offset<<" is "<<EnumToStringx(elementresult->InstanceEnum())<<" when "<<EnumToStringx(enum_in)<<" was expected");1558 }1559 1556 if(interp==P1Enum){ 1560 1557 int vertexpidlist[NUMVERTICES]; … … 2398 2395 for(int i=0;i<this->results->Size();i++){ 2399 2396 ElementResult* elementresult=(ElementResult*)this->results->GetObjectByOffset(i); 2400 resultsenums[i]= elementresult->InstanceEnum();2397 resultsenums[i]=StringToEnumx(elementresult->GetResultName()); 2401 2398 resultstimes[i]=elementresult->GetTime(); 2402 2399 resultssteps[i]=elementresult->GetStep(); -
issm/trunk-jpl/src/c/classes/ExternalResults/ExternalResult.h
r15067 r16474 25 25 virtual ~ExternalResult(){}; 26 26 /*Virtual functions:{{{*/ 27 virtual int InstanceEnum()=0;28 27 virtual void WriteData(FILE* fid,bool io_gather)=0; 29 virtual void GetResultName(char**)=0;28 virtual char* GetResultName(void)=0; 30 29 virtual int GetStep(void)=0; 31 30 /*}}}*/ -
issm/trunk-jpl/src/c/classes/ExternalResults/GenericExternalResult.h
r16470 r16474 23 23 private: 24 24 int id; 25 int enum_type; //in case we have an identifiable enum for this result 26 char* enum_string; //in case this result is only identifiable by a unique string, though arbitrary. 25 char* result_name; 27 26 ResultType value; 28 27 int M; … … 34 33 /*Diverse: must be in front, as it is used in what follows*/ 35 34 void GenericEcho(void){/*{{{*/ 36 _printf_(" id: " << this->id << "\n"); 37 if(this->enum_type!=-1)_printf_(" enum: " << this->enum_type << " (" << EnumToStringx(this->enum_type) << ")\n"); 38 else _printf_(" string identified: " << this->enum_string ); 39 _printf_(" step: " << this->step << "\n"); 40 _printf_(" time: " << this->time << "\n"); 35 _printf_(" id : " << this->id << "\n"); 36 _printf_(" result_name : " << this->result_name<< "\n"); 37 _printf_(" step : " << this->step << "\n"); 38 _printf_(" time : " << this->time << "\n"); 41 39 } 42 40 /*}}}*/ 43 41 void GenericWriteData(FILE* fid){/*{{{*/ 44 42 45 int length;46 43 IssmPDouble passiveDouble; 47 char* name = NULL; 48 49 /*First write enum: */ 50 if(this->enum_type!=-1)EnumToStringx(&name,this->enum_type); 51 else{ 52 name=xNew<char>(strlen(this->enum_string)+1); xMemCpy<char>(name,enum_string,strlen(this->enum_string)+1); 53 } 54 length=(strlen(name)+1)*sizeof(char); 44 45 /*First write name: */ 46 int length=(strlen(this->result_name)+1)*sizeof(char); 55 47 fwrite(&length,sizeof(int),1,fid); 56 fwrite(name,length,1,fid); 57 xDelete<char>(name); 48 fwrite(this->result_name,length,1,fid); 58 49 59 50 /*Now write time and step: */ … … 65 56 /*GenericExternalResult constructors and destructors*/ 66 57 GenericExternalResult(){ /*{{{*/ 67 id = 0; 68 enum_type = -1; 69 enum_string= NULL; 70 M = 0; 71 N = 0; 72 step = 0; 73 time = 0; 58 id = 0; 59 result_name = NULL; 60 M = 0; 61 N = 0; 62 step = 0; 63 time = 0; 74 64 } /*}}}*/ 75 65 GenericExternalResult(int in_id, int in_enum_type,ResultType in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/ 76 id = 0; 77 enum_type = -1; 78 enum_string=NULL; 79 M = 0; 80 N = 0; 81 step = 0; 82 time = 0; 66 id = 0; 67 result_name = NULL; 68 M = 0; 69 N = 0; 70 step = 0; 71 time = 0; 83 72 _error_("template GenericExternalResult(int in_id, int in_enum_type,double* in_values, int in_M,int in_N,int in_step,IssmDouble in_time) not implemented for this ResultType\n"); 84 73 } … … 86 75 GenericExternalResult(int in_id, int in_enum_type,ResultType in_value,int in_step, IssmDouble in_time){ /*{{{*/ 87 76 id = in_id; 88 enum_type = in_enum_type;89 enum_string = NULL;90 77 value = in_value; 91 78 step = in_step; 92 79 time = in_time; 80 81 /*Convert enum to name*/ 82 EnumToStringx(&this->result_name,in_enum_type); 93 83 } 94 84 /*}}}*/ 95 GenericExternalResult(int in_id,const char* in_ enum_string,ResultType in_value,int in_step, IssmDouble in_time){ /*{{{*/85 GenericExternalResult(int in_id,const char* in_result_name,ResultType in_value,int in_step, IssmDouble in_time){ /*{{{*/ 96 86 id = in_id; 97 enum_type = -1;98 enum_string = xNew<char>(strlen(in_enum_string)+1); xMemCpy<char>(enum_string,in_enum_string,strlen(in_enum_string)+1);99 87 value = in_value; 100 88 step = in_step; 101 89 time = in_time; 90 91 /*Copy name*/ 92 this->result_name = xNew<char>(strlen(in_result_name)+1); 93 xMemCpy<char>(this->result_name,in_result_name,strlen(in_result_name)+1); 102 94 } 103 95 /*}}}*/ 104 96 ~GenericExternalResult(){ /*{{{*/ 105 if(enum_string)xDelete<char>(enum_string);97 xDelete<char>(result_name); 106 98 } /*}}}*/ 107 99 … … 122 114 } /*}}}*/ 123 115 Object* copy(void) { /*{{{*/ 124 if(enum_type!=-1) return new GenericExternalResult<ResultType>(this->id,this->enum_type,this->value,this->step,this->time); 125 else return new GenericExternalResult<ResultType>(this->id,this->enum_string,this->value,this->step,this->time); 116 return new GenericExternalResult<ResultType>(this->id,this->result_name,this->value,this->step,this->time); 126 117 } /*}}}*/ 127 118 … … 154 145 155 146 } /*}}}*/ 156 void GetResultName(char** pname){ /*{{{*/ 157 if(this->enum_type!=-1)EnumToStringx(pname,this->enum_type); 158 else{ 159 char* name=xNew<char>(strlen(enum_string)+1); xMemCpy<char>(name,enum_string,strlen(enum_string)+1); 160 *pname=name; 161 } 147 char* GetResultName(void){ /*{{{*/ 148 char* name = xNew<char>(strlen(this->result_name)+1); 149 xMemCpy<char>(name,this->result_name,strlen(this->result_name)+1); 150 return name; 162 151 } /*}}}*/ 163 152 int GetStep(void){ /*{{{*/ 164 153 return this->step; 165 154 } /*}}}*/ 166 int InstanceEnum(void){ /*{{{*/167 return this->enum_type;168 } /*}}}*/169 155 }; 170 156 … … 208 194 template <> inline GenericExternalResult<char*>::GenericExternalResult(int in_id, int in_enum_type,char* in_value,int in_step, IssmDouble in_time){ /*{{{*/ 209 195 210 id=in_id; 211 enum_type=in_enum_type; 212 value=xNew<char>(strlen(in_value)+1); 196 id = in_id; 197 value = xNew<char>(strlen(in_value)+1); 213 198 xMemCpy<char>(value,in_value,(strlen(in_value)+1)); 214 step=in_step; 215 time=in_time; 199 step = in_step; 200 time = in_time; 201 202 /*Convert enum to name*/ 203 EnumToStringx(&this->result_name,in_enum_type); 216 204 217 205 } /*}}}*/ 218 206 template <> inline GenericExternalResult<char*>::~GenericExternalResult(){ /*{{{*/ 207 xDelete<char>(result_name); 219 208 xDelete<char>(value); 220 209 } /*}}}*/ … … 257 246 template <> inline GenericExternalResult<IssmPDouble*>::GenericExternalResult(int in_id, int in_enum_type,IssmPDouble* in_values, int in_M,int in_N,int in_step,IssmDouble in_time){/*{{{*/ 258 247 259 id=in_id; 260 enum_type=in_enum_type; 261 M=in_M; 262 N=in_N; 263 264 step=in_step; 265 time=in_time; 248 id = in_id; 249 M = in_M; 250 N = in_N; 251 252 EnumToStringx(&this->result_name,in_enum_type); 253 254 step = in_step; 255 time = in_time; 266 256 267 257 /*Copy result in values*/ … … 277 267 } /*}}}*/ 278 268 template <> inline GenericExternalResult<IssmPDouble*>::~GenericExternalResult(){ /*{{{*/ 269 xDelete<char>(result_name); 279 270 xDelete<IssmPDouble>(value); 280 271 } /*}}}*/ … … 304 295 } /*}}}*/ 305 296 template <> inline Object* GenericExternalResult<IssmPDouble*>::copy(void){ /*{{{*/ 306 return new GenericExternalResult<IssmPDouble*>(this->id, this->enum_type,this->value,this->M,this->N,this->step,this->time);297 return new GenericExternalResult<IssmPDouble*>(this->id,StringToEnumx(this->result_name),this->value,this->M,this->N,this->step,this->time); 307 298 } /*}}}*/ 308 299 template <> inline void GenericExternalResult<IssmPDouble*>::WriteData(FILE* fid,bool io_gather){ /*{{{*/ 309 300 310 301 int my_rank; 311 int length;312 302 int type; 313 303 int rows,cols; … … 324 314 325 315 /*First write enum: */ 326 EnumToStringx(&name,this->enum_type); 327 length=(strlen(name)+1)*sizeof(char); 316 int length=(strlen(this->result_name)+1)*sizeof(char); 328 317 fwrite(&length,sizeof(int),1,fid); 329 fwrite(name,length,1,fid); 330 xDelete<char>(name); 318 fwrite(this->result_name,length,1,fid); 331 319 332 320 /*Now write time and step: */ … … 356 344 /*}}}*/ 357 345 template <> inline GenericExternalResult<Vector<IssmPDouble>*>::GenericExternalResult(int in_id, int in_enum_type,Vector<IssmPDouble>* in_value,int in_step, IssmDouble in_time){ /*{{{*/ 358 id=in_id; 359 enum_type=in_enum_type; 360 M=0; 361 N=0; 362 363 step=in_step; 364 time=in_time; 346 id = in_id; 347 M = 0; 348 N = 0; 349 350 /*Convert enum to name*/ 351 EnumToStringx(&this->result_name,in_enum_type); 352 353 step = in_step; 354 time = in_time; 365 355 366 356 value = in_value; 367 357 } /*}}}*/ 368 358 template <> inline GenericExternalResult<Vector<IssmPDouble>*>::~GenericExternalResult(){ /*{{{*/ 359 xDelete<char>(this->result_name); 369 360 delete value; 370 361 } /*}}}*/ … … 382 373 } /*}}}*/ 383 374 template <> inline Object* GenericExternalResult<Vector<IssmPDouble>*>::copy(void){ /*{{{*/ 384 return new GenericExternalResult<Vector<IssmPDouble>*>(this->id, this->enum_type,this->value,this->step,this->time);375 return new GenericExternalResult<Vector<IssmPDouble>*>(this->id,StringToEnumx(this->result_name),this->value,this->step,this->time); 385 376 } /*}}}*/ 386 377 template <> inline void GenericExternalResult<Vector<IssmPDouble>*>::WriteData(FILE* fid,bool io_gather){ /*{{{*/ … … 398 389 399 390 if(IssmComm::GetRank()==0){ 400 /*First write enum: */ 401 EnumToStringx(&name,this->enum_type); 402 length=(strlen(name)+1)*sizeof(char); 391 /*First write name: */ 392 length=(strlen(this->result_name)+1)*sizeof(char); 403 393 fwrite(&length,sizeof(int),1,fid); 404 fwrite(name,length,1,fid); 405 xDelete<char>(name); 394 fwrite(this->result_name,length,1,fid); 406 395 407 396 /*Now write time and step: */ -
issm/trunk-jpl/src/c/classes/ExternalResults/Results.cpp
r16469 r16474 66 66 ElementResult* result=dynamic_cast<ElementResult*>(*object); 67 67 68 if(result-> InstanceEnum()==in_result->InstanceEnum()){69 if( result->GetStep()==in_result->GetStep()){68 if(result->GetStep()==in_result->GetStep()){ 69 if(strcmp(result->GetResultName(),in_result->GetResultName())==0){ 70 70 this->DeleteObject(result); 71 71 break; … … 91 91 ExternalResult* result=dynamic_cast<ExternalResult*>(this->GetObjectByOffset(i)); 92 92 93 if(result-> InstanceEnum()==in_result->InstanceEnum()){94 if( result->GetStep()==in_result->GetStep()){93 if(result->GetStep()==in_result->GetStep()){ 94 if(strcmp(result->GetResultName(),in_result->GetResultName())==0){ 95 95 this->DeleteObject(result); 96 96 break; … … 109 109 ExternalResult* result=dynamic_cast<ExternalResult*>(this->GetObjectByOffset(i)); 110 110 111 if(result-> InstanceEnum()==result_enum){112 if( result->GetStep()==result_step){111 if(result->GetStep()==result_step){ 112 if(strcmp(result->GetResultName(),EnumToStringx(result_enum))==0){ 113 113 this->DeleteObject(result); 114 114 break; -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateOutputDefinitions.cpp
r16408 r16474 12 12 int i,j; 13 13 14 Parameters *parameters= NULL;15 DataSet * output_definitions=NULL;16 int * output_definition_enums;17 int num_output_definitions;18 int numgates;19 char ** gatenames=NULL;20 IssmDouble ** gatesegments=NULL;21 int * gatesegments_M=NULL;14 Parameters *parameters = NULL; 15 DataSet *output_definitions = NULL; 16 int *output_definition_enums = NULL; 17 int num_output_definitions; 18 int numgates; 19 char **gatenames = NULL; 20 IssmDouble **gatesegments = NULL; 21 int *gatesegments_M = NULL; 22 22 23 23 /*Get parameters: */ … … 43 43 /*Free ressources:*/ 44 44 for(j=0;j<numgates;j++){ 45 char* string=gatenames[j];xDelete<char>(string);46 IssmDouble* gate =gatesegments[j]; xDelete<IssmDouble>(gate);45 char* string = gatenames[j]; xDelete<char>(string); 46 IssmDouble* gate = gatesegments[j]; xDelete<IssmDouble>(gate); 47 47 } 48 48 xDelete<char*>(gatenames);
Note:
See TracChangeset
for help on using the changeset viewer.