Changeset 17603
- Timestamp:
- 03/31/14 13:33:46 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_la_theta.cpp
r17570 r17603 11 11 12 12 /*intermediary: */ 13 Matrix<IssmDouble>* Kff = NULL; 14 Matrix<IssmDouble>* Kfs = NULL; 15 Vector<IssmDouble>* ug = NULL; 16 Vector<IssmDouble>* uf = NULL; 17 Vector<IssmDouble>* pf = NULL; 18 Vector<IssmDouble>* df = NULL; 19 Vector<IssmDouble>* ys = NULL; 13 Matrix<IssmDouble>* Kff = NULL; 14 Matrix<IssmDouble>* Kfs = NULL; 15 Vector<IssmDouble>* ug_old = NULL; 16 Vector<IssmDouble>* ug = NULL; 17 Vector<IssmDouble>* uf = NULL; 18 Vector<IssmDouble>* pf = NULL; 19 Vector<IssmDouble>* df = NULL; 20 Vector<IssmDouble>* ys = NULL; 20 21 int configuration_type; 21 22 … … 31 32 32 33 /*Convergence criterion*/ 33 int count = 0; 34 femmodel->parameters->SetParam(reCast<IssmDouble>(10.),AugmentedLagrangianREnum); 34 int count = 0; 35 IssmDouble eps_rel = .001; 36 femmodel->parameters->SetParam(0.6,AugmentedLagrangianREnum); 37 GetSolutionFromInputsx(&ug,femmodel); 35 38 36 39 while(true){ 40 41 /*save pointer to old velocity*/ 42 delete ug_old;ug_old=ug; 37 43 38 44 /*Solve KU=F*/ … … 51 57 analysis->InputUpdateFromSolutionFSXTH(femmodel->elements,femmodel->parameters); 52 58 59 /*Check for convergence*/ 60 Vector<IssmDouble>* dug=ug_old->Duplicate(); ug_old->Copy(dug); dug->AYPX(ug,-1.0); 61 IssmDouble ndu=dug->Norm(NORM_TWO); delete dug; 62 IssmDouble nu =ug_old->Norm(NORM_TWO); 63 if (xIsNan<IssmDouble>(ndu) || xIsNan<IssmDouble>(nu)) _error_("convergence criterion is NaN!"); 64 if((ndu/nu)<eps_rel){ 65 if(VerboseConvergence()) _printf0_(setw(50) << left << " Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " < " << eps_rel*100 << " %\n"); 66 break; 67 } 68 else{ 69 if(VerboseConvergence()) _printf0_(setw(50) << left << " Convergence criterion: norm(du)/norm(u)" << ndu/nu*100 << " > " << eps_rel*100 << " %\n"); 70 } 71 53 72 count++; 54 if(count> 5) break;73 if(count>20) break; 55 74 } 56 75 57 /*Check for convergence*/58 //_error_("STOP");59 60 76 delete ug; 77 delete ug_old; 61 78 delete analysis; 62 79 }
Note:
See TracChangeset
for help on using the changeset viewer.