source:
issm/oecreview/Archive/14064-14311/ISSM-14166-14167.diff@
14312
Last change on this file since 14312 was 14312, checked in by , 12 years ago | |
---|---|
File size: 2.9 KB |
-
../trunk-jpl/src/c/solvers/solver_newton.cpp
55 55 xdelete(&old_uf);old_uf=uf; 56 56 57 57 /*Solver forward model*/ 58 femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL); 58 if(count==1){ 59 femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL); 60 CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type); 61 Reduceloadx(pf,Kfs,ys);xdelete(&Kfs); 62 Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters);xdelete(&df); 63 Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);xdelete(&ys); 64 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);xdelete(&ug); 65 xdelete(&old_ug);old_ug=ug; 66 xdelete(&old_uf);old_uf=uf; 67 } 68 uf=old_uf->Duplicate(); old_uf->Copy(uf); 69 70 /*Prepare next iteration using Newton's method*/ 71 femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);xdelete(&df); 59 72 CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type); 60 Reduceloadx(pf,Kfs,ys);xdelete(&Kfs); 61 Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters);xdelete(&df); 73 Reduceloadx(pf,Kfs,ys); xdelete(&Kfs); 74 75 pJf=pf->Duplicate(); 76 Kff->MatMult(uf,pJf);// xdelete(&Kff); 77 pJf->Scale(-1.0); pJf->AXPY(pf,+1.0); //xdelete(&pf); 78 79 femmodel->CreateJacobianMatrixx(&Jff,kmax); 80 Solverx(&duf,Jff,pJf,NULL,NULL,femmodel->parameters); xdelete(&Jff); xdelete(&pJf); 81 uf->AXPY(duf, 1.0); xdelete(&duf); 62 82 Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);xdelete(&ys); 63 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug); xdelete(&ug);83 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug); 64 84 65 85 /*Check convergence*/ 66 86 convergence(&converged,Kff,pf,uf,old_uf,femmodel->parameters); … … 81 101 break; 82 102 } 83 103 84 /*Prepare next iteration using Newton's method*/85 femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);86 CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);87 Reduceloadx(pf,Kfs,ys); xdelete(&Kfs);88 89 pJf=pf->Duplicate(); Kff->MatMult(uf,pJf); xdelete(&Kff);90 pJf->Scale(-1.0); pJf->AXPY(pf,+1.0); xdelete(&pf);91 92 femmodel->CreateJacobianMatrixx(&Jff,kmax);93 Solverx(&duf,Jff,pJf,NULL,NULL,femmodel->parameters); xdelete(&Jff); xdelete(&pJf);94 uf->AXPY(duf, 1.0); xdelete(&duf);95 Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);xdelete(&ys);96 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);97 98 104 count++; 99 105 } 100 106
Note:
See TracBrowser
for help on using the repository browser.