Changeset 3959
- Timestamp:
- 05/26/10 15:38:28 (15 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp
r3332 r3959 5 5 #include "./Mergesolutionfromftogx.h" 6 6 7 void Mergesolutionfromftogx( Vec* pug, Vec uf, Mat Gmn, Vec ys, NodeSets* nodesets ){7 void Mergesolutionfromftogx( Vec* pug, Vec uf, Mat Gmn, Vec ys, NodeSets* nodesets,bool flag_ys0){ 8 8 9 9 /*output: */ … … 12 12 13 13 /*intermediary*/ 14 Vec ys0=NULL; 14 15 Vec u_m=NULL; 15 16 Vec u_n=NULL; 16 int 17 int 17 int u_n_local_size; 18 int Gmn_localm,Gmn_localn; 18 19 19 20 … … 24 25 /*merge single point constraints into n set: */ 25 26 if(ys){ 26 VecMerge(u_n,ys,nodesets->GetPV_S(),nodesets->GetSSize()); 27 if (flag_ys0){ 28 29 /*Create ys0, full of 0: */ 30 VecDuplicate(ys,&ys0); 31 VecSet(ys0,0.0); 32 VecAssemblyBegin(ys0); 33 VecAssemblyEnd(ys0); 34 35 VecMerge(u_n,ys0,nodesets->GetPV_S(),nodesets->GetSSize()); 36 } 37 else{ 38 VecMerge(u_n,ys,nodesets->GetPV_S(),nodesets->GetSSize()); 39 } 27 40 } 28 41 … … 41 54 42 55 /*Free ressources:*/ 56 VecFree(&ys0); 43 57 VecFree(&u_m); 44 58 VecFree(&u_n); -
issm/trunk/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h
r3913 r3959 9 9 10 10 /* local prototypes: */ 11 void Mergesolutionfromftogx( Vec* pug, Vec uf, Mat Gmn, Vec ys, NodeSets* nodesets );11 void Mergesolutionfromftogx( Vec* pug, Vec uf, Mat Gmn, Vec ys, NodeSets* nodesets,bool flag_ys0=false); 12 12 13 13 #endif /* _MERGESOLUTIONFROMFTOGX_H */ -
issm/trunk/src/c/modules/Reduceloadfromgtofx/Reduceloadfromgtofx.cpp
r3332 r3959 11 11 #include "./Reduceloadfromgtofx.h" 12 12 13 void Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat G_mn, Mat Kfs, Vec y_s, NodeSets* nodesets ){13 void Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat G_mn, Mat Kfs, Vec y_s, NodeSets* nodesets,bool flag_ys0){ 14 14 15 15 /*output: */ … … 17 17 18 18 /*intermediary*/ 19 Vec y_s0=NULL; 19 20 Vec pn=NULL; 20 21 Vec pm=NULL; … … 68 69 MatGetLocalSize(Kfs,&Kfsm,&Kfsn); 69 70 Kfsy_s=NewVecFromLocalSize(Kfsm); 70 MatMultPatch(Kfs,y_s,Kfsy_s); 71 if (flag_ys0){ 72 73 /*Create y_s0, full of 0: */ 74 VecDuplicate(y_s,&y_s0); 75 VecSet(y_s0,0.0); 76 VecAssemblyBegin(y_s0); 77 VecAssemblyEnd(y_s0); 78 79 MatMultPatch(Kfs,y_s0,Kfsy_s); 80 } 81 else{ 82 MatMultPatch(Kfs,y_s,Kfsy_s); 83 } 71 84 72 85 a=-1; … … 85 98 86 99 /*Free ressources and return*/ 100 VecFree(&y_s0); 87 101 VecFree(&pn); 88 102 VecFree(&pm); -
issm/trunk/src/c/modules/Reduceloadfromgtofx/Reduceloadfromgtofx.h
r3913 r3959 9 9 10 10 /* local prototypes: */ 11 void Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat Gmn, Mat Kfs, Vec ys, NodeSets* nodesets );11 void Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat Gmn, Mat Kfs, Vec ys, NodeSets* nodesets, bool flag_ys0=false); 12 12 13 13 #endif /* _REDUCELOADFROMGTOFX_H */ -
issm/trunk/src/c/modules/Reducevectorgtosx/Reducevectorgtosx.cpp
r3332 r3959 6 6 #include "./Reducevectorgtosx.h" 7 7 8 void Reducevectorgtosx( Vec* pys, Vec * pys0, Vecyg, NodeSets* nodesets){8 void Reducevectorgtosx( Vec* pys, Vec yg, NodeSets* nodesets){ 9 9 10 10 /*output: */ 11 11 Vec ys=NULL; 12 Vec ys0=NULL;13 12 14 13 /*intermediary: */ … … 26 25 } 27 26 28 /*Create ys0, full of 0: */29 if(ys){30 VecDuplicate(ys,&ys0);31 VecSet(ys0,0.0);32 VecAssemblyBegin(ys0);33 VecAssemblyEnd(ys0);34 }35 36 27 /*Free ressources:*/ 37 28 VecFree(&yn); 38 29 } 39 30 40 /*Assign output pointer s:*/31 /*Assign output pointer:*/ 41 32 *pys=ys; 42 *pys0=ys0;43 33 } -
issm/trunk/src/c/modules/Reducevectorgtosx/Reducevectorgtosx.h
r3913 r3959 10 10 11 11 /* local prototypes: */ 12 void Reducevectorgtosx( Vec* pys, Vec * pys0,Vecyg, NodeSets* nodesets);12 void Reducevectorgtosx( Vec* pys, Vec yg, NodeSets* nodesets); 13 13 14 14 #endif /* _REDUCEVECTORGTOSX_H */ -
issm/trunk/src/c/solutions/ControlInitialization.cpp
r3922 r3959 140 140 xfree((void**)&dofset);dofset=dofsetgen(3,dof012,4,numberofnodes*4); VecMerge(fem_ds->yg->vector,ug,dofset,3*numberofnodes); 141 141 142 VecFree(&fem_ds->ys); VecFree(&fem_ds->ys0);143 Reducevectorgtosx(&fem_ds->ys, &fem_ds->ys0,fem_ds->yg->vector,fem_ds->nodesets);142 VecFree(&fem_ds->ys); 143 Reducevectorgtosx(&fem_ds->ys,fem_ds->yg->vector,fem_ds->nodesets); 144 144 145 145 //Compute Stokes velocities to speed up later runs -
issm/trunk/src/c/solutions/diagnostic_core.cpp
r3938 r3959 121 121 if(verbose)_printf_("%s\n"," update boundary conditions for macyeal pattyn using hutter results..."); 122 122 if (ismacayealpattyn){ 123 VecFree(&fem_dh->yg->vector); VecFree(&fem_dh->ys); VecFree(&fem_dh->ys0);123 VecFree(&fem_dh->yg->vector); VecFree(&fem_dh->ys); 124 124 VecDuplicatePatch(&fem_dh->yg->vector,ug); 125 Reducevectorgtosx(&fem_dh->ys, &fem_dh->ys0,fem_dh->yg->vector,fem_dh->nodesets);125 Reducevectorgtosx(&fem_dh->ys,fem_dh->yg->vector,fem_dh->nodesets); 126 126 } 127 127 … … 165 165 xfree((void**)&dofset);dofset=dofsetgen(2,dof01,4,numberofnodes*4); VecMerge(fem_ds->yg->vector,ug,dofset,2*numberofnodes); 166 166 xfree((void**)&dofset);dofset=dofsetgen(1,dof2,4,numberofnodes*4); VecMerge(fem_ds->yg->vector,ug_vert,dofset,1*numberofnodes); 167 VecFree(&fem_ds->ys); VecFree(&fem_ds->ys0);168 Reducevectorgtosx(&fem_ds->ys, &fem_ds->ys0,fem_ds->yg->vector,fem_ds->nodesets);167 VecFree(&fem_ds->ys); 168 Reducevectorgtosx(&fem_ds->ys,fem_ds->yg->vector,fem_ds->nodesets); 169 169 170 170 if(verbose)_printf_("%s\n"," computing stokes velocities and pressure ..."); -
issm/trunk/src/c/solutions/gradjcompute_core.cpp
r3941 r3959 76 76 77 77 _printf_("%s\n"," reduce adjoint load from g-set to f-set:"); 78 Reduceloadfromgtofx(&du_f, du_g, femmodel->Gmn, K_fs0, femmodel->ys 0, femmodel->nodesets);78 Reduceloadfromgtofx(&du_f, du_g, femmodel->Gmn, K_fs0, femmodel->ys, femmodel->nodesets,true); //true means that ys0 flag is activated: all spc are 0 79 79 VecFree(&du_g);MatFree(&K_fs0); 80 80 … … 84 84 85 85 _printf_("%s\n"," merge back to g set:"); 86 Mergesolutionfromftogx(&lambda_g, lambda_f,femmodel->Gmn,femmodel->ys 0,femmodel->nodesets);86 Mergesolutionfromftogx(&lambda_g, lambda_f,femmodel->Gmn,femmodel->ys,femmodel->nodesets,true);//true means that ys0 flag is activated: all spc are 0 87 87 VecFree(&lambda_f); 88 88
Note:
See TracChangeset
for help on using the changeset viewer.