Changeset 1209
- Timestamp:
- 07/01/09 17:49:07 (16 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 1 added
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/Makefile.am
r1189 r1209 574 574 ./parallel/control.cpp\ 575 575 ./parallel/control_core.cpp\ 576 ./parallel/ControlPrepareStokes.cpp\ 576 577 ./parallel/objectivefunctionC.cpp\ 577 578 ./parallel/GradJCompute.cpp\ -
issm/trunk/src/c/parallel/GradJCompute.cpp
r1208 r1209 57 57 58 58 _printf_("%s\n"," recover solution for this stiffness and right hand side:"); 59 diagnostic_core_nonlinear(&u_g,&K_ff0,&K_fs0,femmodel,inputs, analysis_type,sub_analysis_type);59 diagnostic_core_nonlinear(&u_g,&K_ff0,&K_fs0,femmodel,inputs,DiagnosticAnalysisEnum(),sub_analysis_type); 60 60 VecToMPISerial(&u_g_double,u_g); VecFree(&u_g); 61 61 inputs->Add("velocity",u_g_double,numberofdofspernode,numberofnodes); -
issm/trunk/src/c/parallel/ProcessResults.cpp
r1046 r1209 101 101 /*Recover femmodels first: */ 102 102 if(analysis_type==DiagnosticAnalysisEnum()){ 103 104 103 fem_dh=fems+0; 105 104 fem_dv=fems+1; … … 116 115 117 116 if(analysis_type==TransientAnalysisEnum()){ 118 119 117 fem_dh=fems+0; 120 118 fem_dv=fems+1; … … 144 142 145 143 if(analysis_type==ControlAnalysisEnum()){ 146 fem_dh=fems+0; //load u_g 144 fem_dh=fems+0; 145 fem_dv=fems+1; 146 fem_ds=fems+2; 147 fem_dhu=fems+3; 148 fem_sl=fems+4; 147 149 fem_c=fems+0; //load param_g 148 150 -
issm/trunk/src/c/parallel/control_core.cpp
r1184 r1209 15 15 /*fem models: */ 16 16 FemModel* fem_dh=NULL; 17 FemModel* fem_dv=NULL; 18 FemModel* fem_dhu=NULL; 19 FemModel* fem_ds=NULL; 20 FemModel* fem_sl=NULL; 17 21 18 22 /*output: */ … … 57 61 /*recover fem models: */ 58 62 fem_dh=fems+0; 63 fem_dv=fems+1; 64 fem_ds=fems+2; 65 fem_dhu=fems+3; 66 fem_sl=fems+4; 59 67 60 68 //first recover parameters common to all solutions … … 91 99 fem_dh->parameters->DeleteObject((Object*)param); 92 100 101 /*take care of Stokes: compute slope and get spc once for all*/ 102 if (isstokes){ 103 ControlPrepareStokes(fems,inputs); 104 } 105 93 106 /*Start looping: */ 94 107 for(n=0;n<nsteps;n++){ … … 99 112 100 113 /*Update parameters: */ 101 UpdateFromInputsx(fem_dh->elements,fem_dh->nodes,fem_dh->loads, fem_dh->materials,inputs); 114 if (isstokes){ 115 UpdateFromInputsx(fem_ds->elements,fem_ds->nodes,fem_ds->loads, fem_ds->materials,inputs); 116 } 117 else{ 118 UpdateFromInputsx(fem_dh->elements,fem_dh->nodes,fem_dh->loads, fem_dh->materials,inputs); 119 } 102 120 103 121 _printf_("%s\n"," computing gradJ..."); 104 grad_g=GradJCompute(inputs,fem_dh); 122 if (isstokes){ 123 grad_g=GradJCompute(inputs,fem_ds); 124 } 125 else{ 126 grad_g=GradJCompute(inputs,fem_dh); 127 } 105 128 _printf_("%s\n"," done."); 106 129 … … 113 136 114 137 _printf_("%s\n"," optimizing along gradient direction..."); 115 optargs.femmodel=fem_dh; optargs.param_g=param_g; optargs.grad_g=grad_g_double; optargs.inputs=inputs;optargs.n=n; 138 if (isstokes){ 139 optargs.femmodel=fem_ds; 140 } 141 else{ 142 optargs.femmodel=fem_dh; 143 } 144 optargs.param_g=param_g; optargs.grad_g=grad_g_double; optargs.inputs=inputs;optargs.n=n; 116 145 optpars.xmin=0; optpars.xmax=1; optpars.tolerance=tolx; optpars.maxiter=(int)maxiter[n]; 117 146 BrentSearch(&search_scalar,J+n,&optpars,&objectivefunctionC,&optargs); -
issm/trunk/src/c/parallel/objectivefunctionC.cpp
r1208 r1209 77 77 78 78 //Run diagnostic with updated parameters. 79 diagnostic_core_nonlinear(&u_g,NULL,NULL,femmodel,inputs, analysis_type,sub_analysis_type);79 diagnostic_core_nonlinear(&u_g,NULL,NULL,femmodel,inputs,DiagnosticAnalysisEnum(),sub_analysis_type); 80 80 VecToMPISerial(&u_g_double,u_g); VecFree(&u_g); 81 81 inputs->Add("velocity",u_g_double,numberofdofspernode,numberofnodes); -
issm/trunk/src/c/parallel/parallel.h
r1184 r1209 40 40 void WriteLockFile(char* filename); 41 41 42 void ControlPrepareStokes(FemModel* fems, ParameterInputs* inputs); 43 42 44 void CreateFemModel(FemModel* femmodel,ConstDataHandle MODEL,char* analysis_type,char* sub_analysis_type); 43 45 //int BatchDebug(Mat* Kgg,Vec* pg,FemModel* femmodel,char* filename);
Note:
See TracChangeset
for help on using the changeset viewer.