Changeset 11324
- Timestamp:
- 02/06/12 08:07:33 (13 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/modules/SystemMatricesx/SystemMatricesx.cpp
r9826 r11324 143 143 /*Assign output pointers: */ 144 144 if(pKff) *pKff=Kff; 145 else MatFree(&Kff); 145 146 if(pKfs) *pKfs=Kfs; 147 else MatFree(&Kfs); 146 148 if(ppf) *ppf=pf; 149 else VecFree(&pf); 147 150 if(pdf) *pdf=df; 151 else VecFree(&df); 148 152 if(pkmax) *pkmax=kmax; 149 153 } -
issm/trunk-jpl/src/c/solvers/solver_newton.cpp
r11322 r11324 47 47 for(;;){ 48 48 49 //save pointer to old velocity50 49 VecFree(&old_ug);old_ug=ug; 51 50 VecFree(&old_uf);old_uf=uf; 52 51 52 /*Solver forward model*/ 53 53 SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 54 54 CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type); 55 55 Reduceloadx(pf,Kfs,ys);MatFree(&Kfs); 56 Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters); 56 Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters);VecFree(&df); 57 Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);VecFree(&ys); 58 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);VecFree(&ug); 57 59 58 convergence(&converged,Kff,pf,uf,old_uf,femmodel->parameters); 59 60 CreateJacobianMatrixx(&Jff,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 61 62 Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters); 63 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug); 64 SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 65 VecDuplicate(pf,&pJf); 66 MatMultPatch(Kff,uf,pJf); 67 VecAXPY(pJf,-1.,pf); 68 Solverx(&duf,Jff,pJf,NULL,NULL,femmodel->parameters); 69 MatFree(&Kff);VecFree(&pf); VecFree(&df); 70 VecAXPY(uf,-1.,duf); 71 Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);VecFree(&ys); 72 73 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug); 74 75 /*Increase count: */ 60 /*Check convergence*/ 61 convergence(&converged,Kff,pf,uf,old_uf,femmodel->parameters); 62 MatFree(&Kff);VecFree(&pf); 76 63 count++; 77 64 if(converged==true)break; … … 80 67 break; 81 68 } 69 70 /*Prepare next iteration using Newton's method*/ 71 CreateJacobianMatrixx(&Jff,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 72 SystemMatricesx(&Kff,NULL,&pf,NULL,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 73 CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type); 74 VecDuplicate(pf,&pJf); 75 MatMultPatch(Kff,uf,pJf); MatFree(&Kff); 76 VecScale(pJf,-1.); 77 VecAXPY(pJf,+1.,pf); VecFree(&pf); 78 Solverx(&duf,Jff,pJf,NULL,NULL,femmodel->parameters); 79 MatFree(&Jff); VecFree(&pJf); 80 VecAXPY(uf,+1.,duf); VecFree(&duf); 81 Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);VecFree(&ys); 82 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug); 82 83 } 83 84
Note:
See TracChangeset
for help on using the changeset viewer.