Changeset 3030
- Timestamp:
- 02/16/10 08:39:48 (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/Qmux/DakotaResponses.cpp
r2333 r3030 13 13 #include "../EnumDefinitions/EnumDefinitions.h" 14 14 #include "../MassFluxx/MassFluxx.h" 15 #include "../Misfitx/Misfitx.h" 15 16 16 17 #undef __FUNCT__ … … 221 222 /*Free ressources:*/ 222 223 xfree((void**)&vz); 224 } 225 else if(strcmp(response_descriptor,"misfit")==0){ 226 227 int isstokes,ismacayealpattyn,ishutter; 228 FemModel* femmodel=NULL; 229 ParameterInputs* inputs=NULL; //needed to plug velocity into elements. 230 double J=0; 231 int analysis_type,sub_analysis_type; 232 int numberofdofspernode,numberofnodes; 233 Vec u_g=NULL; 234 235 /*retrieve active fem model: */ 236 model->FindParam(&isstokes,"isstokes"); 237 model->FindParam(&ismacayealpattyn,"ismacayealpattyn"); 238 model->FindParam(&ishutter,"ishutter"); 239 240 if(isstokes){ 241 femmodel=model->GetFormulation(DiagnosticAnalysisEnum(),StokesAnalysisEnum()); 242 } 243 if(ismacayealpattyn){ 244 femmodel=model->GetFormulation(DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 245 } 246 if(ishutter){ 247 femmodel=model->GetFormulation(DiagnosticAnalysisEnum(),HutterAnalysisEnum()); 248 } 249 250 251 /*Recover analysis_type: */ 252 femmodel->parameters->FindParam(&analysis_type,"analysis_type"); 253 femmodel->parameters->FindParam(&sub_analysis_type,"sub_analysis_type"); 254 femmodel->parameters->FindParam(&numberofdofspernode,"numberofdofspernode"); 255 femmodel->parameters->FindParam(&numberofnodes,"numberofnodes"); 256 257 /*Recover velocity: */ 258 found=results->FindResult(&u_g,"u_g"); 259 if(!found)throw ErrorException(__FUNCT__," could not find velocity to compute misfit"); 260 261 /*Add to inputs: */ 262 inputs=new ParameterInputs; 263 inputs->Add("velocity",u_g,numberofdofspernode,numberofnodes); 264 265 /*Compute misfit: */ 266 Misfitx( &J, femmodel->elements,femmodel->nodes, femmodel->loads, femmodel->materials, femmodel->parameters,inputs,analysis_type,sub_analysis_type); 267 268 269 if(my_rank==0)responses[i]=J; 270 271 /*Some cleanup: */ 272 VecFree(&u_g); 273 delete inputs; 223 274 224 275 }
Note:
See TracChangeset
for help on using the changeset viewer.