Changeset 3959


Ignore:
Timestamp:
05/26/10 15:38:28 (15 years ago)
Author:
Mathieu Morlighem
Message:

no more ys0, now use flag true or false when calling Mergesolution anf Reduceload

Location:
issm/trunk/src/c
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.cpp

    r3332 r3959  
    55#include "./Mergesolutionfromftogx.h"
    66
    7 void    Mergesolutionfromftogx( Vec* pug, Vec uf, Mat Gmn, Vec ys, NodeSets* nodesets){
     7void    Mergesolutionfromftogx( Vec* pug, Vec uf, Mat Gmn, Vec ys, NodeSets* nodesets,bool flag_ys0){
    88
    99        /*output: */
     
    1212
    1313        /*intermediary*/
     14        Vec ys0=NULL;
    1415        Vec u_m=NULL;
    1516        Vec u_n=NULL;
    16         int  u_n_local_size;
    17         int  Gmn_localm,Gmn_localn;
     17        int u_n_local_size;
     18        int Gmn_localm,Gmn_localn;
    1819       
    1920       
     
    2425        /*merge single point constraints into n set: */
    2526        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                }
    2740        }
    2841
     
    4154               
    4255        /*Free ressources:*/
     56        VecFree(&ys0);
    4357        VecFree(&u_m);
    4458        VecFree(&u_n);
  • issm/trunk/src/c/modules/Mergesolutionfromftogx/Mergesolutionfromftogx.h

    r3913 r3959  
    99
    1010/* local prototypes: */
    11 void    Mergesolutionfromftogx( Vec* pug, Vec uf, Mat Gmn, Vec ys, NodeSets* nodesets);
     11void    Mergesolutionfromftogx( Vec* pug, Vec uf, Mat Gmn, Vec ys, NodeSets* nodesets,bool flag_ys0=false);
    1212
    1313#endif  /* _MERGESOLUTIONFROMFTOGX_H */
  • issm/trunk/src/c/modules/Reduceloadfromgtofx/Reduceloadfromgtofx.cpp

    r3332 r3959  
    1111#include "./Reduceloadfromgtofx.h"
    1212
    13 void    Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat G_mn, Mat Kfs, Vec y_s, NodeSets* nodesets){
     13void    Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat G_mn, Mat Kfs, Vec y_s, NodeSets* nodesets,bool flag_ys0){
    1414
    1515        /*output: */
     
    1717
    1818        /*intermediary*/
     19        Vec y_s0=NULL;
    1920        Vec pn=NULL;
    2021        Vec pm=NULL;
     
    6869                        MatGetLocalSize(Kfs,&Kfsm,&Kfsn);
    6970                        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                        }
    7184
    7285                        a=-1;
     
    8598
    8699        /*Free ressources and return*/
     100        VecFree(&y_s0);
    87101        VecFree(&pn);
    88102        VecFree(&pm);
  • issm/trunk/src/c/modules/Reduceloadfromgtofx/Reduceloadfromgtofx.h

    r3913 r3959  
    99
    1010/* local prototypes: */
    11 void    Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat Gmn, Mat Kfs, Vec ys, NodeSets* nodesets);
     11void    Reduceloadfromgtofx( Vec* ppf, Vec pg, Mat Gmn, Mat Kfs, Vec ys, NodeSets* nodesets, bool flag_ys0=false);
    1212
    1313#endif  /* _REDUCELOADFROMGTOFX_H */
  • issm/trunk/src/c/modules/Reducevectorgtosx/Reducevectorgtosx.cpp

    r3332 r3959  
    66#include "./Reducevectorgtosx.h"
    77
    8 void Reducevectorgtosx( Vec* pys, Vec* pys0, Vec yg, NodeSets* nodesets){
     8void Reducevectorgtosx( Vec* pys, Vec yg, NodeSets* nodesets){
    99
    1010        /*output: */
    1111        Vec ys=NULL;
    12         Vec ys0=NULL;
    1312
    1413        /*intermediary: */
     
    2625                }
    2726
    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 
    3627                /*Free ressources:*/
    3728                VecFree(&yn);
    3829        }
    3930       
    40         /*Assign output pointers:*/
     31        /*Assign output pointer:*/
    4132        *pys=ys;
    42         *pys0=ys0;
    4333}
  • issm/trunk/src/c/modules/Reducevectorgtosx/Reducevectorgtosx.h

    r3913 r3959  
    1010
    1111/* local prototypes: */
    12 void    Reducevectorgtosx( Vec* pys, Vec* pys0,Vec yg, NodeSets* nodesets);
     12void    Reducevectorgtosx( Vec* pys, Vec yg, NodeSets* nodesets);
    1313
    1414#endif  /* _REDUCEVECTORGTOSX_H */
  • issm/trunk/src/c/solutions/ControlInitialization.cpp

    r3922 r3959  
    140140        xfree((void**)&dofset);dofset=dofsetgen(3,dof012,4,numberofnodes*4); VecMerge(fem_ds->yg->vector,ug,dofset,3*numberofnodes);
    141141       
    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);
    144144
    145145        //Compute Stokes velocities to speed up later runs
  • issm/trunk/src/c/solutions/diagnostic_core.cpp

    r3938 r3959  
    121121                if(verbose)_printf_("%s\n"," update boundary conditions for macyeal pattyn using hutter results...");
    122122                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);
    124124                        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);
    126126                }
    127127
     
    165165                        xfree((void**)&dofset);dofset=dofsetgen(2,dof01,4,numberofnodes*4); VecMerge(fem_ds->yg->vector,ug,dofset,2*numberofnodes);
    166166                        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);
    169169
    170170                        if(verbose)_printf_("%s\n"," computing stokes velocities and pressure ...");
  • issm/trunk/src/c/solutions/gradjcompute_core.cpp

    r3941 r3959  
    7676
    7777        _printf_("%s\n","      reduce adjoint load from g-set to f-set:");
    78         Reduceloadfromgtofx(&du_f, du_g, femmodel->Gmn, K_fs0, femmodel->ys0, 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
    7979        VecFree(&du_g);MatFree(&K_fs0);
    8080
     
    8484       
    8585        _printf_("%s\n","      merge back to g set:");
    86         Mergesolutionfromftogx(&lambda_g, lambda_f,femmodel->Gmn,femmodel->ys0,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
    8787        VecFree(&lambda_f);
    8888
Note: See TracChangeset for help on using the changeset viewer.