Changeset 24313 for issm/trunk/src/c/solutionsequences/convergence.cpp
- Timestamp:
- 11/01/19 12:01:57 (5 years ago)
- Location:
- issm/trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk
-
issm/trunk/src
- Property svn:mergeinfo changed
-
issm/trunk/src/c
- Property svn:ignore
-
issm/trunk/src/c/solutionsequences/convergence.cpp
r23394 r24313 7 7 #include "../shared/shared.h" 8 8 9 void convergence(bool* pconverged, Matrix<IssmDouble>* Kff,Vector<IssmDouble>* pf,Vector<IssmDouble>* uf,Vector<IssmDouble>* old_uf,IssmDouble eps_res,IssmDouble eps_rel,IssmDouble eps_abs){ /*{{{*/9 void convergence(bool* pconverged, Matrix<IssmDouble>* Kff,Vector<IssmDouble>* pf,Vector<IssmDouble>* uf,Vector<IssmDouble>* old_uf,IssmDouble eps_res,IssmDouble eps_rel,IssmDouble eps_abs){ 10 10 11 11 /*output*/ … … 13 13 14 14 /*intermediary*/ 15 Vector<IssmDouble>* KU=NULL;16 Vector<IssmDouble>* KUF=NULL;17 15 Vector<IssmDouble>* KUold=NULL; 18 16 Vector<IssmDouble>* KUoldF=NULL; 19 17 Vector<IssmDouble>* duf=NULL; 20 18 IssmDouble ndu,nduinf,nu; 21 IssmDouble nKUF;22 19 IssmDouble nKUoldF; 23 20 IssmDouble nF; 24 IssmDouble solver_residue,res;21 IssmDouble res; 25 22 int analysis_type; 26 23 … … 32 29 *pconverged=true; 33 30 return; 34 }35 36 37 /*Display solver caracteristics*/38 if (VerboseConvergence()){39 40 41 42 /*compute KUF = KU - F = K*U - F*/43 KU=uf->Duplicate(); Kff->MatMult(uf,KU);44 KUF=KU->Duplicate(); KU->Copy(KUF); KUF->AYPX(pf,-1.0);45 46 /*compute norm(KUF), norm(F) and residue*/47 nKUF=KUF->Norm(NORM_TWO);48 nF=pf->Norm(NORM_TWO);49 solver_residue=nKUF/nF;50 _printf0_("\n" << " solver residue: norm(KU-F)/norm(F)=" << solver_residue << "\n");51 if(xIsNan<IssmDouble>(solver_residue)){52 //Kff->Echo();53 }54 55 /*clean up*/56 delete KU;57 delete KUF;58 31 } 59 32 … … 139 112 /*assign output*/ 140 113 *pconverged=converged; 141 }/*}}}*/ 142 143 114 }
Note:
See TracChangeset
for help on using the changeset viewer.