Changeset 6580
- Timestamp:
- 11/15/10 13:55:22 (14 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp
r6412 r6580 5 5 #include "./Mergesolutionfromftogx.h" 6 6 7 void Mergesolutionfromftogx( Vec* pug, Vec uf, Vec ys, NodeSets* nodesets, Parameters* parameters,bool flag_ys0){7 void Mergesolutionfromftogx( Vec* pug, Vec uf, Vec ys, NodeSets* nodesets,bool flag_ys0){ 8 8 9 9 /*output: */ -
issm/trunk/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h
r5689 r6580 9 9 10 10 /* local prototypes: */ 11 void Mergesolutionfromftogx( Vec* pug, Vec uf,Vec ys, NodeSets* nodesets, Parameters* parameters,bool flag_ys0=false);11 void Mergesolutionfromftogx( Vec* pug, Vec uf,Vec ys, NodeSets* nodesets,bool flag_ys0=false); 12 12 13 13 #endif /* _MERGESOLUTIONFROMFTOGX_H */ -
issm/trunk/src/c/modules/Reduceloadfromgtofx/Reduceloadfromgtofx.cpp
r6412 r6580 10 10 #include "./Reduceloadfromgtofx.h" 11 11 12 void Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat Kfs, Vec y_s, NodeSets* nodesets, Parameters* parameters,bool flag_ys0){12 void Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat Kfs, Vec y_s, NodeSets* nodesets,bool flag_ys0){ 13 13 14 14 /*output: */ … … 23 23 24 24 /*Parameters: */ 25 bool kffpartition=false;26 25 bool fromlocalsize=true; 27 26 28 parameters->FindParam(&kffpartition,KffEnum);29 27 _printf_(VerboseModule()," Reducing Load vector from gset to fset\n"); 30 28 31 if(!pg){ 32 pf=NULL; 29 /* Reduce pg to pn:*/ 30 VecDuplicate(pg,&pn); 31 VecCopy(pg,pn); 32 33 /*% Reduce pn to pf:*/ 34 35 if (nodesets->GetSSize()){ 36 37 if(nodesets->GetFSize()){ 38 VecPartition(&pf, pn, nodesets->GetPV_F(),nodesets->GetFSize(),false); 39 40 /*pf = pf - Kfs * y_s;*/ 41 MatGetLocalSize(Kfs,&Kfsm,&Kfsn); 42 Kfsy_s=NewVec(Kfsm,fromlocalsize); 43 if (flag_ys0){ 44 45 /*Create y_s0, full of 0: */ 46 VecDuplicate(y_s,&y_s0); 47 VecSet(y_s0,0.0); 48 VecAssemblyBegin(y_s0); 49 VecAssemblyEnd(y_s0); 50 51 MatMultPatch(Kfs,y_s0,Kfsy_s); 52 } 53 else{ 54 MatMultPatch(Kfs,y_s,Kfsy_s); 55 } 56 57 a=-1; 58 VecAXPY(pf,a,Kfsy_s); 59 } 60 else{ 61 pf=NULL; 62 } 33 63 } 34 64 else{ 35 /* Reduce pg to pn:*/ 36 VecDuplicate(pg,&pn); 37 VecCopy(pg,pn); 38 39 /*% Reduce pn to pf:*/ 65 /*pf=pn*/ 66 VecDuplicate(pn,&pf); 67 VecCopy(pn,pf); 68 } 40 69 41 if (nodesets->GetSSize()){42 43 if(nodesets->GetFSize()){44 VecPartition(&pf, pn, nodesets->GetPV_F(),nodesets->GetFSize(),kffpartition);45 46 /*pf = pf - Kfs * y_s;*/47 MatGetLocalSize(Kfs,&Kfsm,&Kfsn);48 Kfsy_s=NewVec(Kfsm,fromlocalsize);49 if (flag_ys0){50 51 /*Create y_s0, full of 0: */52 VecDuplicate(y_s,&y_s0);53 VecSet(y_s0,0.0);54 VecAssemblyBegin(y_s0);55 VecAssemblyEnd(y_s0);56 57 MatMultPatch(Kfs,y_s0,Kfsy_s);58 }59 else{60 MatMultPatch(Kfs,y_s,Kfsy_s);61 }62 63 a=-1;64 VecAXPY(pf,a,Kfsy_s);65 }66 else{67 pf=NULL;68 }69 }70 else{71 /*pf=pn*/72 VecDuplicate(pn,&pf);73 VecCopy(pn,pf);74 }75 }76 77 70 78 71 /*Assign correct pointer*/ … … 83 76 VecFree(&pn); 84 77 VecFree(&Kfsy_s); 85 86 78 } -
issm/trunk/src/c/modules/Reduceloadfromgtofx/Reduceloadfromgtofx.h
r5689 r6580 9 9 10 10 /* local prototypes: */ 11 void Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat Kfs, Vec ys, NodeSets* nodesets, Parameters* parameters,bool flag_ys0=false);11 void Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat Kfs, Vec ys, NodeSets* nodesets,bool flag_ys0=false); 12 12 13 13 #endif /* _REDUCELOADFROMGTOFX_H */ -
issm/trunk/src/c/modules/Reduceloadx/Reduceloadx.cpp
r6412 r6580 11 11 #include "./Reduceloadx.h" 12 12 13 void Reduceloadx( Vec pf, Mat Kfs, Vec y_s, Parameters* parameters,bool flag_ys0){13 void Reduceloadx( Vec pf, Mat Kfs, Vec y_s,bool flag_ys0){ 14 14 15 15 /*intermediary*/ -
issm/trunk/src/c/modules/Reduceloadx/Reduceloadx.h
r6011 r6580 9 9 10 10 /* local prototypes: */ 11 void Reduceloadx( Vec pf, Mat Kfs, Vec ys, Parameters* parameters,bool flag_ys0=false);11 void Reduceloadx( Vec pf, Mat Kfs, Vec ys,bool flag_ys0=false); 12 12 13 13 #endif /* _REDUCELOADX_H */ -
issm/trunk/src/c/modules/Reducematrixfromgtofx/Reducematrixfromgtofx.cpp
r6412 r6580 4 4 #include "./Reducematrixfromgtofx.h" 5 5 6 void Reducematrixfromgtofx( Mat* pKff, Mat* pKfs,Mat Kgg,NodeSets* nodesets ,Parameters* parameters){6 void Reducematrixfromgtofx( Mat* pKff, Mat* pKfs,Mat Kgg,NodeSets* nodesets){ 7 7 8 8 /*output: */ -
issm/trunk/src/c/modules/Reducematrixfromgtofx/Reducematrixfromgtofx.h
r5689 r6580 10 10 11 11 /* local prototypes: */ 12 void Reducematrixfromgtofx( Mat* pKff, Mat* pKfs,Mat Kgg,NodeSets* nodesets ,Parameters* parameters);12 void Reducematrixfromgtofx( Mat* pKff, Mat* pKfs,Mat Kgg,NodeSets* nodesets); 13 13 14 14 #endif /* _REDUCEMATRIXFROMGTOFX_H */ -
issm/trunk/src/c/modules/Reducevectorgtofx/Reducevectorgtofx.cpp
r5787 r6580 19 19 if(nodesets){ 20 20 21 22 21 if (nodesets->GetGSize() && nodesets->GetFSize()){ 23 24 22 VecPartition(&uf,ug,nodesets->GetPV_F(),nodesets->GetFSize(),kffpartitioning); 25 26 23 } 27 24 } -
issm/trunk/src/c/solvers/solver_adjoint_linear.cpp
r6011 r6580 23 23 if(kffpartitioning){ 24 24 SystemMatricesx(NULL,&Kff, &Kfs, NULL,&pf, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 25 Reduceloadx(pf, Kfs, femmodel->ys, femmodel->parameters,true); MatFree(&Kfs); //true means spc = 025 Reduceloadx(pf, Kfs, femmodel->ys,true); MatFree(&Kfs); //true means spc = 0 26 26 } 27 27 else{ 28 28 SystemMatricesx(&Kgg, NULL, NULL, &pg,NULL, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 29 Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->nodesets ,femmodel->parameters); MatFree(&Kgg);30 Reduceloadfromgtofx(&pf, pg, Kfs, femmodel->ys, femmodel->nodesets, femmodel->parameters,true);VecFree(&pg); MatFree(&Kfs);//true means spc = 029 Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->nodesets); MatFree(&Kgg); 30 Reduceloadfromgtofx(&pf, pg, Kfs, femmodel->ys, femmodel->nodesets,true);VecFree(&pg); MatFree(&Kfs);//true means spc = 0 31 31 } 32 32 33 33 Solverx(&uf, Kff, pf, NULL, femmodel->parameters); MatFree(&Kff); VecFree(&pf); 34 35 Mergesolutionfromftogx(&ug, uf,femmodel->ys,femmodel->nodesets,femmodel->parameters,true); VecFree(&uf);//true means spc0 36 37 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug); VecFree(&ug); VecFree(&uf); 34 Mergesolutionfromftogx(&ug, uf,femmodel->ys,femmodel->nodesets,true); VecFree(&uf);//true means spc0 35 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug); VecFree(&ug); VecFree(&uf); 38 36 } -
issm/trunk/src/c/solvers/solver_diagnostic_nonlinear.cpp
r6412 r6580 54 54 if(kffpartitioning){ 55 55 SystemMatricesx(NULL,&Kff, &Kfs, NULL,&pf, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,loads,femmodel->materials,femmodel->parameters); 56 Reduceloadx(pf, Kfs, femmodel->ys ,femmodel->parameters); MatFree(&Kfs);56 Reduceloadx(pf, Kfs, femmodel->ys); MatFree(&Kfs); 57 57 } 58 58 else{ 59 59 SystemMatricesx(&Kgg, NULL, NULL, &pg,NULL, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,loads,femmodel->materials,femmodel->parameters); 60 Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->nodesets ,femmodel->parameters); MatFree(&Kgg);61 Reduceloadfromgtofx(&pf, pg, Kfs, femmodel->ys, femmodel->nodesets ,femmodel->parameters); VecFree(&pg); MatFree(&Kfs);60 Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->nodesets); MatFree(&Kgg); 61 Reduceloadfromgtofx(&pf, pg, Kfs, femmodel->ys, femmodel->nodesets); VecFree(&pg); MatFree(&Kfs); 62 62 } 63 63 64 64 Solverx(&uf, Kff, pf, old_uf, femmodel->parameters); 65 66 Mergesolutionfromftogx(&ug, uf,femmodel->ys,femmodel->nodesets,femmodel->parameters); 67 65 Mergesolutionfromftogx(&ug, uf,femmodel->ys,femmodel->nodesets); 68 66 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug); 69 67 … … 72 70 73 71 convergence(&converged,Kff,pf,uf,old_uf,femmodel->parameters); MatFree(&Kff);VecFree(&pf); 74 75 72 InputUpdateFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,converged,ConvergedEnum); 76 73 -
issm/trunk/src/c/solvers/solver_linear.cpp
r6011 r6580 21 21 if(kffpartitioning){ 22 22 SystemMatricesx(NULL,&Kff, &Kfs, NULL,&pf, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 23 Reduceloadx(pf, Kfs, femmodel->ys ,femmodel->parameters); MatFree(&Kfs);23 Reduceloadx(pf, Kfs, femmodel->ys); MatFree(&Kfs); 24 24 } 25 25 else{ 26 26 SystemMatricesx(&Kgg, NULL, NULL, &pg,NULL, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 27 Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->nodesets ,femmodel->parameters); MatFree(&Kgg);28 Reduceloadfromgtofx(&pf, pg, Kfs, femmodel->ys, femmodel->nodesets ,femmodel->parameters);VecFree(&pg); MatFree(&Kfs);27 Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->nodesets); MatFree(&Kgg); 28 Reduceloadfromgtofx(&pf, pg, Kfs, femmodel->ys, femmodel->nodesets);VecFree(&pg); MatFree(&Kfs); 29 29 } 30 30 31 31 Solverx(&uf, Kff, pf, NULL, femmodel->parameters); MatFree(&Kff); VecFree(&pf); 32 Mergesolutionfromftogx(&ug, uf,femmodel->ys,femmodel->nodesets,femmodel->parameters);VecFree(&uf); 33 32 Mergesolutionfromftogx(&ug, uf,femmodel->ys,femmodel->nodesets);VecFree(&uf); 34 33 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug); VecFree(&ug); VecFree(&uf); 35 34 } -
issm/trunk/src/c/solvers/solver_stokescoupling_nonlinear.cpp
r6412 r6580 42 42 Reducevectorgtofx(&uf_horiz, ug_horiz, femmodel->nodesets,femmodel->parameters); 43 43 44 45 44 for(;;){ 46 45 … … 58 57 if(kffpartitioning){ 59 58 SystemMatricesx(NULL,&Kff_horiz, &Kfs_horiz, NULL,&pf_horiz, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 60 Reduceloadx(pf_horiz, Kfs_horiz, femmodel->ys ,femmodel->parameters); MatFree(&Kfs_horiz);59 Reduceloadx(pf_horiz, Kfs_horiz, femmodel->ys); MatFree(&Kfs_horiz); 61 60 } 62 61 else{ 63 62 SystemMatricesx(&Kgg_horiz, NULL, NULL, &pg_horiz,NULL, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 64 Reducematrixfromgtofx(&Kff_horiz,&Kfs_horiz,Kgg_horiz,femmodel->nodesets ,femmodel->parameters); MatFree(&Kgg_horiz);65 Reduceloadfromgtofx(&pf_horiz, pg_horiz, Kfs_horiz, femmodel->ys, femmodel->nodesets ,femmodel->parameters); VecFree(&pg_horiz); MatFree(&Kfs_horiz);63 Reducematrixfromgtofx(&Kff_horiz,&Kfs_horiz,Kgg_horiz,femmodel->nodesets); MatFree(&Kgg_horiz); 64 Reduceloadfromgtofx(&pf_horiz, pg_horiz, Kfs_horiz, femmodel->ys, femmodel->nodesets); VecFree(&pg_horiz); MatFree(&Kfs_horiz); 66 65 } 67 66 68 67 Solverx(&uf_horiz, Kff_horiz, pf_horiz, old_uf_horiz, femmodel->parameters); 69 70 Mergesolutionfromftogx(&ug_horiz, uf_horiz,femmodel->ys,femmodel->nodesets,femmodel->parameters); 71 68 Mergesolutionfromftogx(&ug_horiz, uf_horiz,femmodel->ys,femmodel->nodesets); 72 69 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_horiz); 73 70 … … 78 75 if(kffpartitioning){ 79 76 SystemMatricesx(NULL,&Kff_vert, &Kfs_vert, NULL,&pf_vert, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 80 Reduceloadx(pf_vert, Kfs_vert, femmodel->ys ,femmodel->parameters); MatFree(&Kfs_vert);77 Reduceloadx(pf_vert, Kfs_vert, femmodel->ys); MatFree(&Kfs_vert); 81 78 } 82 79 else{ 83 80 SystemMatricesx(&Kgg_vert, NULL, NULL, &pg_vert,NULL, NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 84 Reducematrixfromgtofx(&Kff_vert,&Kfs_vert,Kgg_vert,femmodel->nodesets ,femmodel->parameters); MatFree(&Kgg_vert);85 Reduceloadfromgtofx(&pf_vert, pg_vert, Kfs_vert, femmodel->ys, femmodel->nodesets ,femmodel->parameters);VecFree(&pg_vert); MatFree(&Kfs_vert);81 Reducematrixfromgtofx(&Kff_vert,&Kfs_vert,Kgg_vert,femmodel->nodesets); MatFree(&Kgg_vert); 82 Reduceloadfromgtofx(&pf_vert, pg_vert, Kfs_vert, femmodel->ys, femmodel->nodesets);VecFree(&pg_vert); MatFree(&Kfs_vert); 86 83 } 87 84 88 85 Solverx(&uf_vert, Kff_vert, pf_vert, NULL, femmodel->parameters); MatFree(&Kff_vert); VecFree(&pf_vert); 89 Mergesolutionfromftogx(&ug_vert, uf_vert,femmodel->ys,femmodel->nodesets,femmodel->parameters);VecFree(&uf_vert); 90 86 Mergesolutionfromftogx(&ug_vert, uf_vert,femmodel->ys,femmodel->nodesets);VecFree(&uf_vert); 91 87 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_vert); VecFree(&ug_vert); VecFree(&uf_vert); 92 88 -
issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp
r6412 r6580 51 51 if(kffpartitioning){ 52 52 SystemMatricesx(NULL,&Kff, &Kfs, NULL,&pf,&melting_offset,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 53 Reduceloadx(pf, Kfs, femmodel->ys ,femmodel->parameters); MatFree(&Kfs);53 Reduceloadx(pf, Kfs, femmodel->ys); MatFree(&Kfs); 54 54 } 55 55 else{ 56 56 SystemMatricesx(&Kgg,NULL, NULL, &pg,NULL, &melting_offset,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 57 Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->nodesets ,femmodel->parameters); MatFree(&Kgg);58 Reduceloadfromgtofx(&pf, pg, Kfs, femmodel->ys, femmodel->nodesets ,femmodel->parameters);VecFree(&pg); MatFree(&Kfs);57 Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->nodesets); MatFree(&Kgg); 58 Reduceloadfromgtofx(&pf, pg, Kfs, femmodel->ys, femmodel->nodesets);VecFree(&pg); MatFree(&Kfs); 59 59 } 60 60 … … 62 62 Solverx(&tf, Kff, pf,tf_old, femmodel->parameters); 63 63 VecFree(&tf_old); VecDuplicatePatch(&tf_old,tf); 64 65 64 MatFree(&Kff);VecFree(&pf);VecFree(&tg); 66 65 67 Mergesolutionfromftogx(&tg, tf,femmodel->ys,femmodel->nodesets ,femmodel->parameters);66 Mergesolutionfromftogx(&tg, tf,femmodel->ys,femmodel->nodesets); 68 67 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,tg); 69 68
Note:
See TracChangeset
for help on using the changeset viewer.