Changeset 16504
- Timestamp:
- 10/22/13 09:05:37 (11 years ago)
- Location:
- issm/trunk-jpl/src/c/classes
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/ExternalResults/ExternalResult.h
r16474 r16504 23 23 public: 24 24 25 virtual ~ExternalResult(){}; 26 /*Virtual functions:{{{*/ 27 virtual void WriteData(FILE* fid,bool io_gather)=0; 28 virtual char* GetResultName(void)=0; 29 virtual int GetStep(void)=0; 30 /*}}}*/ 25 virtual ~ExternalResult(){}; 26 virtual void WriteData(FILE* fid,bool io_gather)=0; 27 virtual char* GetResultName(void)=0; 28 virtual int GetStep(void)=0; 29 virtual double GetValue(void)=0; 31 30 }; 32 31 #endif -
issm/trunk-jpl/src/c/classes/ExternalResults/GenericExternalResult.h
r16474 r16504 118 118 119 119 /*GenericExternalResult management: */ 120 void WriteData(FILE* fid,bool io_gather){ /*{{{*/120 void WriteData(FILE* fid,bool io_gather){ /*{{{*/ 121 121 122 122 int my_rank; … … 150 150 return name; 151 151 } /*}}}*/ 152 int GetStep(void){ /*{{{*/152 int GetStep(void){ /*{{{*/ 153 153 return this->step; 154 } /*}}}*/ 155 IssmPDouble GetValue(void){ /*{{{*/ 156 /*Only supported by IssmPDouble result, error out by default*/ 157 _error_("not supported for this type of result"); 158 return 0.; 154 159 } /*}}}*/ 155 160 }; … … 189 194 template <> inline int GenericExternalResult<double>::ObjectEnum(void){ /*{{{*/ 190 195 return DoubleExternalResultEnum; 196 } /*}}}*/ 197 template <> inline double GenericExternalResult<double>::GetValue(void){ /*{{{*/ 198 return value; 191 199 } /*}}}*/ 192 200 -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r16489 r16504 591 591 } 592 592 /*}}}*/ 593 void FemModel::RequestedOutputsx(Results **presults,int* requested_outputs, int numoutputs){/*{{{*/ 594 595 /*Convert list of enums to list of string*/ 596 char** enumlist = xNew<char*>(numoutputs); 597 for(int i=0;i<numoutputs;i++){ 598 EnumToStringx(&enumlist[i],requested_outputs[i]); 599 } 600 601 /*Call main module*/ 602 this->RequestedOutputsx(presults,enumlist,numoutputs); 603 604 /*clean up and return*/ 605 for(int i=0;i<numoutputs;i++) xDelete<char>(enumlist[i]); 606 xDelete<char*>(enumlist); 607 return; 608 } 609 /*}}}*/ 593 610 void FemModel::RequestedDependentsx(void){/*{{{*/ 594 611 … … 1134 1151 1135 1152 /*Intermediary*/ 1136 int num_responses; 1137 int *responses = NULL; 1138 1139 /*output: */ 1140 IssmDouble J,Jplus; 1153 int num_responses; 1154 int *responses = NULL; 1155 Results *cost_functions = NULL; 1141 1156 1142 1157 /*Recover parameters*/ … … 1144 1159 parameters->FindParam(&responses,NULL,InversionCostFunctionsEnum); 1145 1160 1146 /*Get response*/ 1147 J=0; 1148 //_printf_(true,"list of misfits: "); 1161 /*Get the value of all cost functions*/ 1162 this->RequestedOutputsx(&cost_functions,responses,num_responses); 1163 1164 /*Add all contributions one by one*/ 1165 IssmDouble J=0; 1166 //_printf0_("list of misfits: "); 1149 1167 for(int i=0;i<num_responses;i++){ 1150 this->Responsex(&Jplus,EnumToStringx(responses[i])); 1151 //_printf_(true," %12.7g ",Jplus); 1152 J+=Jplus; 1153 } 1154 //_printf_(true," \n"); 1168 ExternalResult* result=(ExternalResult*)cost_functions->GetObjectByOffset(i); 1169 J += reCast<IssmDouble>(result->GetValue()); 1170 //_printf0_(J<<" "); 1171 } 1172 //_printf0_(" \n"); 1173 _assert_(cost_functions->Size()==num_responses); 1155 1174 1156 1175 /*Assign output pointers: */ 1176 delete cost_functions; 1157 1177 xDelete<int>(responses); 1158 1178 *pJ=J; … … 1203 1223 results->AddResult(new GenericExternalResult<Vector<IssmPDouble>*>(results->Size()+1,gradient_enum,vector_gradient,step,time)); 1204 1224 } 1225 1226 /*Clean up and return*/ 1227 xDelete<int>(control_type); 1205 1228 } 1206 1229 /*}}}*/ -
issm/trunk-jpl/src/c/classes/FemModel.h
r16489 r16504 83 83 #endif 84 84 void RequestedOutputsx(Results **presults,char** requested_outputs, int numoutputs); 85 void RequestedOutputsx(Results **presults,int* requested_outputs, int numoutputs); 85 86 void RequestedDependentsx(void); 86 87 void Responsex(IssmDouble* presponse,int response_descriptor_enum);
Note:
See TracChangeset
for help on using the changeset viewer.