Changeset 4353
- Timestamp:
- 06/30/10 14:17:09 (15 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified issm/trunk/src/c/objects/Elements/Penta.cpp ¶
r4350 r4353 290 290 /*FUNCTION Penta::InputUpdateFromConstant(bool value, int name);{{{1*/ 291 291 void Penta::InputUpdateFromConstant(bool constant, int name){ 292 /*Nothing updated for now*/ 292 293 /*Check that name is an element input*/ 294 if (!IsInput(name)) return; 295 296 /*update input*/ 297 this->inputs->AddInput(new BoolInput(name,constant)); 293 298 } 294 299 /*}}}*/ 295 300 /*FUNCTION Penta::InputUpdateFromConstant(double value, int name);{{{1*/ 296 301 void Penta::InputUpdateFromConstant(double constant, int name){ 297 /*Nothing updated for now*/ 302 /*Check that name is an element input*/ 303 if (!IsInput(name)) return; 304 305 /*update input*/ 306 this->inputs->AddInput(new DoubleInput(name,constant)); 298 307 } 299 308 /*}}}*/ 300 309 /*FUNCTION Penta::InputUpdateFromConstant(int value, int name);{{{1*/ 301 310 void Penta::InputUpdateFromConstant(int constant, int name){ 302 /*Nothing updated for now*/ 311 /*Check that name is an element input*/ 312 if (!IsInput(name)) return; 313 314 /*update input*/ 315 this->inputs->AddInput(new IntInput(name,constant)); 303 316 } 304 317 /*}}}*/ … … 2247 2260 /*FUNCTION Penta::IsInput{{{1*/ 2248 2261 bool Penta::IsInput(int name){ 2249 if (name==ThicknessEnum || 2262 if ( 2263 name==ThicknessEnum || 2250 2264 name==SurfaceEnum || 2251 2265 name==BedEnum || … … 2262 2276 name==TemperatureAverageEnum || 2263 2277 name==RheologyBEnum || 2264 name==RheologyNEnum) { 2278 name==RheologyNEnum || 2279 name==FitEnum 2280 ) { 2265 2281 return true; 2266 2282 } -
TabularUnified issm/trunk/src/c/objects/Elements/Tria.cpp ¶
r4350 r4353 302 302 /*FUNCTION Tria::InputUpdateFromConstant(int value, int name);{{{1*/ 303 303 void Tria::InputUpdateFromConstant(int constant, int name){ 304 /*Nothing updated for now*/ 304 /*Check that name is an element input*/ 305 if (!IsInput(name)) return; 306 307 /*update input*/ 308 this->inputs->AddInput(new IntInput(name,constant)); 305 309 } 306 310 /*}}}*/ 307 311 /*FUNCTION Tria::InputUpdateFromConstant(double value, int name);{{{1*/ 308 312 void Tria::InputUpdateFromConstant(double constant, int name){ 309 /*Nothing updated for now*/ 313 /*Check that name is an element input*/ 314 if (!IsInput(name)) return; 315 316 /*update input*/ 317 this->inputs->AddInput(new DoubleInput(name,constant)); 310 318 } 311 319 /*}}}*/ 312 320 /*FUNCTION Tria::InputUpdateFromConstant(bool value, int name);{{{1*/ 313 321 void Tria::InputUpdateFromConstant(bool constant, int name){ 314 /*Nothing updated for now*/ 322 /*Check that name is an element input*/ 323 if (!IsInput(name)) return; 324 325 /*update input*/ 326 this->inputs->AddInput(new BoolInput(name,constant)); 315 327 } 316 328 /*}}}*/ … … 329 341 else if (analysis_type==DiagnosticHorizAnalysisEnum){ 330 342 InputUpdateFromSolutionDiagnosticHoriz( solution); 343 } 344 else if (analysis_type==AdjointAnalysisEnum){ 345 InputUpdateFromSolutionAdjoint( solution); 331 346 } 332 347 else if (analysis_type==BedSlopeAnalysisEnum || analysis_type==SurfaceSlopeAnalysisEnum){ … … 721 736 double scale=0; 722 737 double S=0; 723 doublefit=-1;738 int fit=-1; 724 739 725 740 /*retrieve some parameters: */ … … 1887 1902 double scaley=1; 1888 1903 double S=0; 1889 doublefit=-1;1904 int fit=-1; 1890 1905 1891 1906 /*inputs: */ … … 2120 2135 /*inputs: */ 2121 2136 bool onwater; 2122 int 2137 int fit; 2123 2138 2124 2139 /*retrieve inputs :*/ … … 5319 5334 } 5320 5335 /*}}}*/ 5336 /*FUNCTION Tria::InputUpdateFromSolutionAdjoint {{{1*/ 5337 void Tria::InputUpdateFromSolutionAdjoint(double* solution){ 5338 5339 int i; 5340 5341 const int numvertices=3; 5342 const int numdofpervertex=2; 5343 const int numdof=numdofpervertex*numvertices; 5344 5345 int doflist[numdof]; 5346 double values[numdof]; 5347 double lambdax[numvertices]; 5348 double lambday[numvertices]; 5349 5350 int dummy; 5351 5352 /*Get dof list: */ 5353 GetDofList(&doflist[0],&dummy); 5354 5355 /*Use the dof list to index into the solution vector: */ 5356 for(i=0;i<numdof;i++){ 5357 values[i]=solution[doflist[i]]; 5358 } 5359 5360 /*Ok, we have vx and vy in values, fill in vx and vy arrays: */ 5361 for(i=0;i<numvertices;i++){ 5362 lambdax[i]=values[i*numdofpervertex+0]; 5363 lambday[i]=values[i*numdofpervertex+1]; 5364 } 5365 5366 /*Add vx and vy as inputs to the tria element: */ 5367 this->inputs->AddInput(new TriaVertexInput(AdjointxEnum,lambdax)); 5368 this->inputs->AddInput(new TriaVertexInput(AdjointyEnum,lambday)); 5369 5370 } 5371 /*}}}*/ 5321 5372 /*FUNCTION Tria::InputUpdateFromSolutionDiagnosticHoriz {{{1*/ 5322 5373 void Tria::InputUpdateFromSolutionDiagnosticHoriz(double* solution){ … … 5473 5524 /*FUNCTION Tria::IsInput{{{1*/ 5474 5525 bool Tria::IsInput(int name){ 5475 if (name==SurfaceSlopeXEnum || 5476 name==SurfaceSlopeYEnum){ 5526 if ( 5527 name==SurfaceSlopeXEnum || 5528 name==SurfaceSlopeYEnum || 5529 name==FitEnum 5530 ){ 5477 5531 return true; 5478 5532 } -
TabularUnified issm/trunk/src/c/objects/Elements/Tria.h ¶
r4285 r4353 152 152 void GetSolutionFromInputsDiagnosticHoriz(Vec solution); 153 153 void GradjDragStokes(Vec gradient); 154 void InputUpdateFromSolutionAdjoint( double* solution); 154 155 void InputUpdateFromSolutionDiagnosticHoriz( double* solution); 155 156 void InputUpdateFromSolutionSlopeCompute( double* solution); -
TabularUnified issm/trunk/src/c/objects/Inputs/IntInput.cpp ¶
r4248 r4353 191 191 /*}}}*/ 192 192 /*FUNCTION IntInput::GetParameterValue(double* pvalue){{{1*/ 193 void IntInput::GetParameterValue(double* pvalue){ISSMERROR(" not supported yet!");} 193 void IntInput::GetParameterValue(double* pvalue){ 194 ISSMERROR("IntInput cannot return a double in parallel"); 195 } 194 196 /*}}}*/ 195 197 /*FUNCTION IntInput::GetParameterValue(double* pvalue,Node* node){{{1*/ -
TabularUnified issm/trunk/src/c/shared/Exceptions/Exceptions.cpp ¶
r3787 r4353 42 42 else{ 43 43 #ifdef _PARALLEL_ 44 printf("\n[%i] %s%s%s%i\n",my_rank,"??? Error using ==> ",file_name.c_str()," at ",file_line);45 printf("[%i] %s %s%s\n\n",my_rank,function_name.c_str()," error message: ",what());44 printf("\n[%i] ??? Error using ==> %s:%i\n",my_rank,file_name.c_str(),file_line); 45 printf("[%i] %s error message: %s\n\n",my_rank,function_name.c_str(),what()); 46 46 #else 47 printf("\n %s%s%s%i\n","??? Error using ==> ",file_name.c_str()," at ",file_line);48 printf("%s %s%s\n\n",function_name.c_str()," error message: ",what());47 printf("\n??? Error using ==> %s at %i\n",file_name.c_str(),file_line); 48 printf("%s error message: %s\n\n",function_name.c_str(),what()); 49 49 #endif 50 50 } -
TabularUnified issm/trunk/src/c/solutions/adjoint_core.cpp ¶
r4331 r4353 11 11 #include "../include/include.h" 12 12 #include "../solvers/solvers.h" 13 14 13 15 14 void adjoint_core(FemModel* femmodel){ -
TabularUnified issm/trunk/src/c/solutions/control_core.cpp ¶
r4285 r4353 19 19 int verbose=0; 20 20 int control_type; 21 intcontrol_steady;21 bool control_steady; 22 22 int nsteps; 23 23 double eps_cm; … … 25 25 double cm_min; 26 26 double cm_max; 27 intcm_gradient;27 bool cm_gradient; 28 28 int dim; 29 29 … … 48 48 femmodel->parameters->FindParam(&nsteps,NStepsEnum); 49 49 femmodel->parameters->FindParam(&control_type,ControlTypeEnum); 50 femmodel->parameters->FindParam(&fit,NULL, NULL,FitEnum);51 femmodel->parameters->FindParam(&optscal,NULL, NULL,OptScalEnum);52 femmodel->parameters->FindParam(&maxiter,NULL, NULL,MaxIterEnum);53 femmodel->parameters->FindParam(&cm_jump,NULL, NULL,CmJumpEnum);50 femmodel->parameters->FindParam(&fit,NULL,FitEnum); 51 femmodel->parameters->FindParam(&optscal,NULL,OptScalEnum); 52 femmodel->parameters->FindParam(&maxiter,NULL,MaxIterEnum); 53 femmodel->parameters->FindParam(&cm_jump,NULL,CmJumpEnum); 54 54 femmodel->parameters->FindParam(&eps_cm,EpsCmEnum); 55 55 femmodel->parameters->FindParam(&tolx,TolXEnum); … … 72 72 73 73 _printf_("\n%s%i%s%i\n"," control method step ",n+1,"/",nsteps); 74 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters, fit[n],FitEnum);74 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,(int)fit[n],FitEnum); 75 75 76 76 /*In case we are running a steady state control method, compute new temperature field using new parameter * distribution: */ -
TabularUnified issm/trunk/src/c/solutions/gradient_core.cpp ¶
r4091 r4353 16 16 17 17 /*parameters: */ 18 intcontrol_steady;18 bool control_steady; 19 19 int control_type; 20 20 int verbose; -
TabularUnified issm/trunk/src/c/solutions/objectivefunctionC.cpp ¶
r4079 r4353 36 36 int control_type; 37 37 int analysis_type; 38 intcontrol_steady;38 bool control_steady; 39 39 bool conserve_loads=true; 40 40 … … 45 45 n=optargs->n; 46 46 47 femmodel->parameters->FindParam(&optscal,NULL, NULL,OptScalEnum);48 femmodel->parameters->FindParam(&fit,NULL, NULL,FitEnum);47 femmodel->parameters->FindParam(&optscal,NULL,OptScalEnum); 48 femmodel->parameters->FindParam(&fit,NULL,FitEnum); 49 49 femmodel->parameters->FindParam(&cm_min,CmMinEnum); 50 50 femmodel->parameters->FindParam(&cm_max,CmMaxEnum);
Note:
See TracChangeset
for help on using the changeset viewer.