source: issm/oecreview/Archive/14064-14311/ISSM-14166-14167.diff@ 14312

Last change on this file since 14312 was 14312, checked in by Mathieu Morlighem, 12 years ago

Added 14064-14311

File size: 2.9 KB
RevLine 
[14312]1Index: ../trunk-jpl/src/c/solvers/solver_newton.cpp
2===================================================================
3--- ../trunk-jpl/src/c/solvers/solver_newton.cpp (revision 14166)
4+++ ../trunk-jpl/src/c/solvers/solver_newton.cpp (revision 14167)
5@@ -55,12 +55,32 @@
6 xdelete(&old_uf);old_uf=uf;
7
8 /*Solver forward model*/
9- femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);
10+ if(count==1){
11+ femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);
12+ CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
13+ Reduceloadx(pf,Kfs,ys);xdelete(&Kfs);
14+ Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters);xdelete(&df);
15+ Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);xdelete(&ys);
16+ InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);xdelete(&ug);
17+ xdelete(&old_ug);old_ug=ug;
18+ xdelete(&old_uf);old_uf=uf;
19+ }
20+ uf=old_uf->Duplicate(); old_uf->Copy(uf);
21+
22+ /*Prepare next iteration using Newton's method*/
23+ femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);xdelete(&df);
24 CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
25- Reduceloadx(pf,Kfs,ys);xdelete(&Kfs);
26- Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters);xdelete(&df);
27+ Reduceloadx(pf,Kfs,ys); xdelete(&Kfs);
28+
29+ pJf=pf->Duplicate();
30+ Kff->MatMult(uf,pJf);// xdelete(&Kff);
31+ pJf->Scale(-1.0); pJf->AXPY(pf,+1.0); //xdelete(&pf);
32+
33+ femmodel->CreateJacobianMatrixx(&Jff,kmax);
34+ Solverx(&duf,Jff,pJf,NULL,NULL,femmodel->parameters); xdelete(&Jff); xdelete(&pJf);
35+ uf->AXPY(duf, 1.0); xdelete(&duf);
36 Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);xdelete(&ys);
37- InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);xdelete(&ug);
38+ InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);
39
40 /*Check convergence*/
41 convergence(&converged,Kff,pf,uf,old_uf,femmodel->parameters);
42@@ -81,20 +101,6 @@
43 break;
44 }
45
46- /*Prepare next iteration using Newton's method*/
47- femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);
48- CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
49- Reduceloadx(pf,Kfs,ys); xdelete(&Kfs);
50-
51- pJf=pf->Duplicate(); Kff->MatMult(uf,pJf); xdelete(&Kff);
52- pJf->Scale(-1.0); pJf->AXPY(pf,+1.0); xdelete(&pf);
53-
54- femmodel->CreateJacobianMatrixx(&Jff,kmax);
55- Solverx(&duf,Jff,pJf,NULL,NULL,femmodel->parameters); xdelete(&Jff); xdelete(&pJf);
56- uf->AXPY(duf, 1.0); xdelete(&duf);
57- Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);xdelete(&ys);
58- InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);
59-
60 count++;
61 }
62
Note: See TracBrowser for help on using the repository browser.