Changeset 2225
- Timestamp:
- 09/14/09 07:35:36 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/parallel/control_core.cpp
r2223 r2225 25 25 Vec u_g=NULL; 26 26 Vec t_g=NULL; 27 Vec m_g=NULL; 27 28 double search_scalar; 28 29 char* control_type=NULL; … … 96 97 /*In case we are running a steady state control method, compute new temperature field using new parameter 97 98 * distribution: */ 98 steadystate_results=new DataSet(ResultsEnum()); 99 steadystate_core(steadystate_results,model,inputs); 100 VecFree(&t_g); steadystate_results->FindResult(&t_g,"t_g"); 101 delete steadystate_results; 102 inputs->Add("temperature",t_g,1,numberofnodes); 99 if (control_steady){ 100 steadystate_results=new DataSet(ResultsEnum()); 101 steadystate_core(steadystate_results,model,inputs); 102 VecFree(&t_g); steadystate_results->FindResult(&t_g,"t_g"); 103 delete steadystate_results; 104 inputs->Add("temperature",t_g,1,numberofnodes); 105 } 103 106 104 107 /*Update parameters: */ … … 133 136 ControlConstrainx(param_g,numberofnodes,mincontrolconstraint,maxcontrolconstraint,control_type); 134 137 _printf_("%s\n"," done."); 135 136 137 138 138 139 _printf_("%s%i%s%g\n"," value of misfit J after optimization #",n+1,": ",J[n]); … … 174 175 /*Write results to disk: */ 175 176 _printf_("%s\n"," preparing final velocity solution..."); 176 177 177 /*Launch diagnostic with the last parameter distribution*/ 178 inputs->Add(control_type,param_g,1,numberofnodes); 179 diagnostic_results=new DataSet(ResultsEnum()); 180 diagnostic_core(diagnostic_results,model, inputs); 181 182 //extract u_g from diagnostic_results, and erase diagnostic_results; 183 diagnostic_results->FindResult(&u_g,"u_g"); 184 delete diagnostic_results; 178 if (control_steady){ 179 inputs->Add(control_type,param_g,1,numberofnodes); 180 steadystate_results=new DataSet(ResultsEnum()); 181 steadystate_core(steadystate_results,model,inputs); 182 183 //extract u_g ,t_g and m_g from steadystate results, and erase diagnostic_results; 184 steadystate_results->FindResult(&u_g,"u_g"); 185 steadystate_results->FindResult(&m_g,"m_g"); 186 steadystate_results->FindResult(&t_g,"t_g"); 187 delete steadystate_results; 188 } 189 else{ 190 inputs->Add(control_type,param_g,1,numberofnodes); 191 diagnostic_results=new DataSet(ResultsEnum()); 192 diagnostic_core(diagnostic_results,model, inputs); 193 194 //extract u_g from diagnostic_results, and erase diagnostic_results; 195 diagnostic_results->FindResult(&u_g,"u_g"); 196 delete diagnostic_results; 197 } 185 198 186 199 /*Plug results into output dataset: */ … … 191 204 result=new Result(results->Size()+1,0,1,"J",J,nsteps); 192 205 results->AddObject(result); 206 if (control_steady){ 207 result=new Result(results->Size()+1,0,1,"u_g",u_g); 208 results->AddObject(result); 209 result=new Result(results->Size()+1,0,1,"t_g",t_g); 210 results->AddObject(result); 211 result=new Result(results->Size()+1,0,1,"m_g",m_g); 212 results->AddObject(result); 213 } 193 214 194 215 /*Free ressources: */
Note:
See TracChangeset
for help on using the changeset viewer.