Changeset 4880
- Timestamp:
- 07/29/10 11:26:26 (15 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/Elements/Beam.cpp
r4873 r4880 407 407 /*}}}*/ 408 408 /*FUNCTION Beam::InputConvergence{{{1*/ 409 void Beam::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){410 411 int 409 bool Beam::InputConvergence(double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){ 410 411 int i; 412 412 Input** new_inputs=NULL; 413 413 Input** old_inputs=NULL; 414 int converged=1;414 bool converged=true; 415 415 416 416 new_inputs=(Input**)xmalloc(num_enums/2*sizeof(Input*)); //half the enums are for the new inputs 417 417 old_inputs=(Input**)xmalloc(num_enums/2*sizeof(Input*)); //half the enums are for the old inputs 418 418 419 419 for(i=0;i<num_enums/2;i++){ 420 420 new_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+0]); … … 427 427 for(i=0;i<num_criterionenums;i++){ 428 428 IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,criterionenums[i]); 429 if(eps[i]>criterionvalues[i]) converged= 0;429 if(eps[i]>criterionvalues[i]) converged=false; 430 430 } 431 431 … … 434 434 xfree((void**)&old_inputs); 435 435 436 /* Assign output pointers:*/437 *pconverged=converged;436 /*Return output*/ 437 return converged; 438 438 439 439 } -
issm/trunk/src/c/objects/Elements/Beam.h
r4873 r4880 84 84 void InputAXPY(int YEnum, double scalar, int XEnum); 85 85 void InputControlConstrain(int control_type,double cm_min, double cm_max); 86 void InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);86 bool InputConvergence(double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums); 87 87 void InputDepthAverageAtBase(int enum_type,int average_enum_type){ISSMERROR("not implemented yet");} 88 88 void InputDuplicate(int original_enum,int new_enum); -
issm/trunk/src/c/objects/Elements/Element.h
r4873 r4880 72 72 virtual void InputAXPY(int YEnum, double scalar, int XEnum)=0; 73 73 virtual void InputControlConstrain(int control_type,double cm_min, double cm_max)=0; 74 virtual void InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums)=0;74 virtual bool InputConvergence(double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums)=0; 75 75 76 76 /*Implementation: */ -
issm/trunk/src/c/objects/Elements/Penta.cpp
r4873 r4880 1058 1058 /*}}}*/ 1059 1059 /*FUNCTION Penta::InputConvergence{{{1*/ 1060 void Penta::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){1061 1062 int 1060 bool Penta::InputConvergence(double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){ 1061 1062 int i; 1063 1063 Input** new_inputs=NULL; 1064 1064 Input** old_inputs=NULL; 1065 int converged=1;1065 bool converged=true; 1066 1066 1067 1067 new_inputs=(Input**)xmalloc(num_enums/2*sizeof(Input*)); //half the enums are for the new inputs 1068 1068 old_inputs=(Input**)xmalloc(num_enums/2*sizeof(Input*)); //half the enums are for the old inputs 1069 1069 1070 1070 for(i=0;i<num_enums/2;i++){ 1071 1071 new_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+0]); … … 1078 1078 for(i=0;i<num_criterionenums;i++){ 1079 1079 IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,criterionenums[i]); 1080 if(eps[i]>criterionvalues[i]) converged= 0;1080 if(eps[i]>criterionvalues[i]) converged=false; 1081 1081 } 1082 1082 … … 1085 1085 xfree((void**)&old_inputs); 1086 1086 1087 /* Assign output pointers:*/1088 *pconverged=converged;1087 /*Return output*/ 1088 return converged; 1089 1089 1090 1090 } -
issm/trunk/src/c/objects/Elements/Penta.h
r4873 r4880 87 87 void InputAXPY(int YEnum, double scalar, int XEnum); 88 88 void InputControlConstrain(int control_type,double cm_min, double cm_max); 89 void InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);89 bool InputConvergence(double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums); 90 90 void InputDepthAverageAtBase(int enum_type,int average_enum_type); 91 91 void InputDuplicate(int original_enum,int new_enum); -
issm/trunk/src/c/objects/Elements/Sing.cpp
r4873 r4880 376 376 /*}}}*/ 377 377 /*FUNCTION Sing::InputConvergence{{{1*/ 378 void Sing::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){378 bool Sing::InputConvergence(double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){ 379 379 380 380 int i; 381 381 Input** new_inputs=NULL; 382 382 Input** old_inputs=NULL; 383 int converged=1;383 bool converged=true; 384 384 385 385 new_inputs=(Input**)xmalloc(num_enums/2*sizeof(Input*)); //half the enums are for the new inputs … … 396 396 for(i=0;i<num_criterionenums;i++){ 397 397 IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,criterionenums[i]); 398 if(eps[i]>criterionvalues[i]) converged= 0;398 if(eps[i]>criterionvalues[i]) converged=false; 399 399 } 400 400 … … 403 403 xfree((void**)&old_inputs); 404 404 405 /* Assign output pointers:*/406 *pconverged=converged;405 /*Return output*/ 406 return converged; 407 407 408 408 } -
issm/trunk/src/c/objects/Elements/Sing.h
r4873 r4880 84 84 void InputAXPY(int YEnum, double scalar, int XEnum); 85 85 void InputControlConstrain(int control_type,double cm_min, double cm_max); 86 void InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);86 bool InputConvergence(double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums); 87 87 void InputDepthAverageAtBase(int enum_type,int average_enum_type){ISSMERROR("not implemented yet");} 88 88 void InputDuplicate(int original_enum,int new_enum); -
issm/trunk/src/c/objects/Elements/Tria.cpp
r4873 r4880 1255 1255 /*}}}*/ 1256 1256 /*FUNCTION Tria::InputConvergence{{{1*/ 1257 void Tria::InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){1257 bool Tria::InputConvergence(double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums){ 1258 1258 1259 1259 int i; 1260 1260 Input** new_inputs=NULL; 1261 1261 Input** old_inputs=NULL; 1262 int converged=1;1262 bool converged=true; 1263 1263 1264 1264 new_inputs=(Input**)xmalloc(num_enums/2*sizeof(Input*)); //half the enums are for the new inputs 1265 1265 old_inputs=(Input**)xmalloc(num_enums/2*sizeof(Input*)); //half the enums are for the old inputs 1266 1266 1267 1267 for(i=0;i<num_enums/2;i++){ 1268 1268 new_inputs[i]=(Input*)this->inputs->GetInput(enums[2*i+0]); … … 1275 1275 for(i=0;i<num_criterionenums;i++){ 1276 1276 IsInputConverged(eps+i,new_inputs,old_inputs,num_enums/2,criterionenums[i]); 1277 if(eps[i]>criterionvalues[i]) converged= 0;1277 if(eps[i]>criterionvalues[i]) converged=false; 1278 1278 } 1279 1279 … … 1282 1282 xfree((void**)&old_inputs); 1283 1283 1284 /* Assign output pointers:*/1285 *pconverged=converged;1284 /*Return output*/ 1285 return converged; 1286 1286 1287 1287 } -
issm/trunk/src/c/objects/Elements/Tria.h
r4873 r4880 83 83 void InputAXPY(int YEnum, double scalar, int XEnum); 84 84 void InputControlConstrain(int control_type,double cm_min, double cm_max); 85 void InputConvergence(int* pconverged,double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums);85 bool InputConvergence(double* eps, int* enums,int num_enums,int* criterionenums,double* criterionvalues,int num_criterionenums); 86 86 void InputDepthAverageAtBase(int enum_type,int average_enum_type); 87 87 void InputDuplicate(int original_enum,int new_enum); -
issm/trunk/src/c/shared/Numerics/IsInputConverged.cpp
r4057 r4880 32 32 /*conpute ndu/du (where u could be velocity, pressure, temperature, etc ...): */ 33 33 for(i=0;i<num_inputs;i++){ 34 35 /*in debugging mode, check that the inputs are of the same type*/ 36 ISSMASSERT(new_inputs[i]->Enum()==old_inputs[i]->Enum()); 37 38 /*Get pointers*/ 34 39 new_inputs[i]->GetValuesPtr(&newvalues,&num_values); 35 40 old_inputs[i]->GetValuesPtr(&oldvalues,&num_values); -
issm/trunk/src/c/solutions/steadystate_core.cpp
r4778 r4880 44 44 diagnostic_core(femmodel); 45 45 46 if(verbose)_printf_("%s\n","checking velocity, temperature and pressure convergence"); 47 if (step>1) if(steadystateconvergence(femmodel)) break; 46 if (step>1){ 47 if(verbose)_printf_("%s\n","checking velocity, temperature and pressure convergence"); 48 if(steadystateconvergence(femmodel)) break; 49 } 48 50 49 51 if(verbose)_printf_("%s\n","saving velocity, temperature and pressure to check for convergence at next step");
Note:
See TracChangeset
for help on using the changeset viewer.