Changeset 11327
- Timestamp:
- 02/06/12 08:50:20 (13 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.cpp
r11322 r11327 10 10 #include "../../EnumDefinitions/EnumDefinitions.h" 11 11 12 void CreateJacobianMatrixx(Mat* pJff,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters ){12 void CreateJacobianMatrixx(Mat* pJff,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,double kmax){ 13 13 14 int connectivity;14 int i,connectivity; 15 15 int numberofdofspernode; 16 16 int fsize,configuration_type; 17 17 Element *element = NULL; 18 Load *load = NULL; 18 19 Mat Jff = NULL; 19 20 … … 31 32 32 33 /*Create and assemble matrix*/ 33 for(i nt i=0;i<elements->Size();i++){34 for(i=0;i<elements->Size();i++){ 34 35 element=(Element*)elements->GetObjectByOffset(i); 35 36 element->CreateJacobianMatrix(Jff); 37 } 38 for (i=0;i<loads->Size();i++){ 39 load=(Load*)loads->GetObjectByOffset(i); 40 if(load->InAnalysis(configuration_type)) load->CreateJacobianMatrix(Jff); 41 if(load->InAnalysis(configuration_type)) load->PenaltyCreateJacobianMatrix(Jff,kmax); 36 42 } 37 43 MatAssemblyBegin(Jff,MAT_FINAL_ASSEMBLY); -
issm/trunk-jpl/src/c/modules/CreateJacobianMatrixx/CreateJacobianMatrixx.h
r11322 r11327 10 10 11 11 /* local prototypes: */ 12 void CreateJacobianMatrixx(Mat* pJff,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters );12 void CreateJacobianMatrixx(Mat* pJff,Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters,double kmax); 13 13 14 14 #endif /* _CREATEJACOBIANMATRIXX_H */ -
issm/trunk-jpl/src/c/objects/Loads/Icefront.h
r10576 r11327 76 76 void CreateKMatrix(Mat Kff, Mat Kfs); 77 77 void CreatePVector(Vec pf); 78 void CreateJacobianMatrix(Mat Jff){_error_("Not implemented yet");}; 79 void PenaltyCreateJacobianMatrix(Mat Jff,double kmax){_error_("Not implemented yet");}; 78 80 void PenaltyCreateKMatrix(Mat Kff, Mat kfs, double kmax); 79 81 void PenaltyCreatePVector(Vec pf, double kmax); -
issm/trunk-jpl/src/c/objects/Loads/Load.h
r9002 r11327 29 29 virtual void CreateKMatrix(Mat Kff, Mat Kfs)=0; 30 30 virtual void CreatePVector(Vec pf)=0; 31 virtual void CreateJacobianMatrix(Mat Jff)=0; 32 virtual void PenaltyCreateJacobianMatrix(Mat Jff,double kmax)=0; 31 33 virtual void PenaltyCreateKMatrix(Mat Kff, Mat Kfs, double kmax)=0; 32 34 virtual void PenaltyCreatePVector(Vec pf, double kmax)=0; -
issm/trunk-jpl/src/c/objects/Loads/Numericalflux.h
r10576 r11327 72 72 void CreateKMatrix(Mat Kff, Mat Kfs); 73 73 void CreatePVector(Vec pf); 74 void CreateJacobianMatrix(Mat Jff){_error_("Not implemented yet");}; 75 void PenaltyCreateJacobianMatrix(Mat Jff,double kmax){_error_("Not implemented yet");}; 74 76 void PenaltyCreateKMatrix(Mat Kff, Mat kfs, double kmax); 75 77 void PenaltyCreatePVector(Vec pf, double kmax); -
issm/trunk-jpl/src/c/objects/Loads/Pengrid.h
r10576 r11327 77 77 void CreateKMatrix(Mat Kff, Mat Kfs); 78 78 void CreatePVector(Vec pf); 79 void CreateJacobianMatrix(Mat Jff){_error_("Not implemented yet");}; 80 void PenaltyCreateJacobianMatrix(Mat Jff,double kmax){_error_("Not implemented yet");}; 79 81 void PenaltyCreateKMatrix(Mat Kff, Mat kfs, double kmax); 80 82 void PenaltyCreatePVector(Vec pf, double kmax); -
issm/trunk-jpl/src/c/objects/Loads/Penpair.cpp
r11247 r11327 209 209 void Penpair::CreatePVector(Vec pf){ 210 210 211 /*No loads applied, do nothing: */ 212 return; 213 214 } 215 /*}}}1*/ 216 /*FUNCTION Penpair::CreateJacobianMatrix{{{1*/ 217 void Penpair::CreateJacobianMatrix(Mat Jff){ 218 /*If you code this piece, don't forget that a penalty will be inactive if it is dealing with clone nodes*/ 211 219 /*No loads applied, do nothing: */ 212 220 return; … … 244 252 /*No loads applied, do nothing: */ 245 253 return; 254 } 255 /*}}}1*/ 256 /*FUNCTION Penpair::PenaltyCreateJacobianMatrix{{{1*/ 257 void Penpair::PenaltyCreateJacobianMatrix(Mat Jff,double kmax){ 258 this->PenaltyCreateKMatrix(Jff,NULL,kmax); 246 259 } 247 260 /*}}}1*/ -
issm/trunk-jpl/src/c/objects/Loads/Penpair.h
r11247 r11327 64 64 void CreateKMatrix(Mat Kff, Mat Kfs); 65 65 void CreatePVector(Vec pf); 66 void PenaltyCreateKMatrix(Mat Kff, Mat kfs, double kmax); 66 void CreateJacobianMatrix(Mat Jff); 67 void PenaltyCreateKMatrix(Mat Kff,Mat Kfs,double kmax); 67 68 void PenaltyCreatePVector(Vec pf, double kmax); 69 void PenaltyCreateJacobianMatrix(Mat Jff,double kmax); 68 70 bool InAnalysis(int analysis_type); 69 71 /*}}}*/ -
issm/trunk-jpl/src/c/objects/Loads/Riftfront.h
r11294 r11327 84 84 void CreateKMatrix(Mat Kff, Mat Kfs); 85 85 void CreatePVector(Vec pf); 86 void CreateJacobianMatrix(Mat Jff){_error_("Not implemented yet");}; 87 void PenaltyCreateJacobianMatrix(Mat Jff,double kmax){_error_("Not implemented yet");}; 86 88 void PenaltyCreateKMatrix(Mat Kff, Mat kfs, double kmax); 87 89 void PenaltyCreatePVector(Vec pf, double kmax); -
issm/trunk-jpl/src/c/objects/Numerics/ElementMatrix.cpp
r11322 r11327 251 251 double* localvalues=NULL; 252 252 253 /*If Kfs is not provided, call the other function*/ 254 if(!Kfs){ 255 this->AddToGlobal(Kff); 256 return; 257 } 258 253 259 /*In debugging mode, check consistency (no NaN, and values not too big)*/ 254 260 this->CheckConsistency(); … … 300 306 double* localvalues=NULL; 301 307 308 /*Check that Jff is not NULL*/ 309 _assert_(Jff); 310 302 311 /*In debugging mode, check consistency (no NaN, and values not too big)*/ 303 312 this->CheckConsistency(); -
issm/trunk-jpl/src/c/solvers/solver_newton.cpp
r11324 r11327 14 14 15 15 /*intermediary: */ 16 bool converged; 17 int num_unstable_constraints; 18 int count; 19 double kmax; 16 20 Mat Kff = NULL, Kfs = NULL, Jff = NULL; 17 21 Vec ug = NULL, old_ug = NULL; … … 20 24 Vec df = NULL; 21 25 Vec ys = NULL; 22 23 bool converged;24 int num_unstable_constraints;25 int count;26 26 27 27 /*parameters:*/ … … 69 69 70 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);71 SystemMatricesx(&Kff,NULL,&pf,NULL,&kmax,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 72 CreateJacobianMatrixx(&Jff,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,kmax); 73 73 CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type); 74 74 VecDuplicate(pf,&pJf); … … 78 78 Solverx(&duf,Jff,pJf,NULL,NULL,femmodel->parameters); 79 79 MatFree(&Jff); VecFree(&pJf); 80 VecAXPY(uf, +1.,duf); VecFree(&duf);80 VecAXPY(uf,1.,duf); VecFree(&duf); 81 81 Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);VecFree(&ys); 82 82 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);
Note:
See TracChangeset
for help on using the changeset viewer.