Changeset 20601
- Timestamp:
- 05/10/16 15:45:24 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_linear.cpp
r17372 r20601 19 19 Vector<IssmDouble>* ys = NULL; 20 20 int configuration_type; 21 22 /*solver convergence test: */ 23 IssmDouble nKUF; 24 IssmDouble nF; 25 IssmDouble solver_residue; 26 Vector<IssmDouble>* KU=NULL; 27 Vector<IssmDouble>* KUF=NULL; 28 29 21 30 22 31 /*Recover parameters: */ … … 27 36 Reduceloadx(pf, Kfs, ys); delete Kfs; 28 37 Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters); 38 39 /*Check that the solver converged nicely: */ 40 41 //compute KUF = KU - F = K*U - F 42 KU=uf->Duplicate(); Kff->MatMult(uf,KU); 43 KUF=KU->Duplicate(); KU->Copy(KUF); KUF->AYPX(pf,-1.0); 44 45 //compute norm(KUF), norm(F) and residue 46 nKUF=KUF->Norm(NORM_TWO); 47 nF=pf->Norm(NORM_TWO); 48 solver_residue=nKUF/nF; 49 if(solver_residue>pow(10,-6))_error_(" solver residue too high!: norm(KU-F)/norm(F)=" << solver_residue << "\n"); 50 51 //clean up 52 delete KU; delete KUF; 29 53 delete Kff; delete pf; delete df; 30 //#ifdef _HAVE_ADOLC_ 31 // for (int i =0; i<uf->svector->M; ++i) { 32 // ADOLC_DUMP_MACRO(uf->svector->vector[i]); 33 // } 34 //#endif 54 55 //#ifdef _HAVE_ADOLC_ 56 // for (int i =0; i<uf->svector->M; ++i) { 57 // ADOLC_DUMP_MACRO(uf->svector->vector[i]); 58 // } 59 //#endif 60 35 61 Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);delete uf; delete ys; 36 62 InputUpdateFromSolutionx(femmodel,ug);
Note:
See TracChangeset
for help on using the changeset viewer.