Changeset 15407


Ignore:
Timestamp:
07/03/13 08:47:27 (12 years ago)
Author:
bdef
Message:

BUG:Solving some memory leaks

Location:
issm/trunk-jpl/src/c
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/Penta.cpp

    r15401 r15407  
    93369336                        if(values[i]>h_max){
    93379337                                residual[i]=kappa*(values[i]-h_max);
     9338                                residual[i+numdof2d]=residual[i];
    93389339                        }
    93399340                        else{
    93409341                                residual[i]=0.0;
     9342                                residual[i+numdof2d]=residual[i];
    93419343                        }
    93429344                }
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r15401 r15407  
    60366036                        }
    60376037                }
     6038                this->inputs->AddInput(new TriaInput(SedimentHeadResidualEnum,residual,P1Enum));
    60386039        }
    60396040
    60406041        /*Add input to the element: */
    60416042        this->inputs->AddInput(new TriaInput(SedimentHeadEnum,values,P1Enum));
    6042         this->inputs->AddInput(new TriaInput(SedimentHeadResidualEnum,residual,P1Enum));
    60436043
    60446044        /*Free ressources:*/
  • issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp

    r15352 r15407  
    1010void solutionsequence_hydro_nonlinear(FemModel* femmodel){
    1111        /*solution : */
    12         Vector<IssmDouble>* ug_sed=NULL;
     12        Vector<IssmDouble>* ug_sed=NULL;
     13        Vector<IssmDouble>* uf_sed=NULL;
     14        Vector<IssmDouble>* uf_sed_sub_iter=NULL;
     15        Vector<IssmDouble>* ug_sed_main_iter=NULL;
     16
    1317        Vector<IssmDouble>* ug_epl=NULL;
    14         Vector<IssmDouble>* uf=NULL;
    15         Vector<IssmDouble>* uf_int_iter=NULL;
    16         Vector<IssmDouble>* ug_sed_main_iter=NULL;
    17         Vector<IssmDouble>* ug_epl_main_iter=NULL;
     18        Vector<IssmDouble>* uf_epl=NULL;
     19        Vector<IssmDouble>* uf_epl_sub_iter=NULL;
     20        Vector<IssmDouble>* ug_epl_main_iter=NULL;
     21
    1822        Vector<IssmDouble>* ys=NULL;
    19         Vector<IssmDouble>* dug=NULL;
    20         Vector<IssmDouble>* old_ug=NULL;
     23        Vector<IssmDouble>* dug=NULL;
    2124       
    2225        Matrix<IssmDouble>* Kff=NULL;
     
    4750        femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
    4851        GetSolutionFromInputsx(&ug_sed, femmodel->elements, femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters);
     52        Reducevectorgtofx(&uf_sed, ug_sed, femmodel->nodes,femmodel->parameters);
    4953        if(isefficientlayer) {
    5054                femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
    5155                GetSolutionFromInputsx(&ug_epl, femmodel->elements, femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters);
     56        Reducevectorgtofx(&uf_epl, ug_epl, femmodel->nodes,femmodel->parameters);
    5257        }
    5358
     
    5863                //save pointer to old velocity
    5964                delete ug_sed_main_iter;
     65                delete uf_sed_sub_iter;
    6066                ug_sed_main_iter=ug_sed;
     67                uf_sed_sub_iter=uf_sed;
    6168                if(isefficientlayer){
    6269                        delete ug_epl_main_iter;
     70                        delete uf_sed_sub_iter;
    6371                        ug_epl_main_iter=ug_epl;
     72                        uf_sed_sub_iter=uf_epl;
    6473                }
    6574
     
    7483                for(;;){
    7584                        femmodel->HydrologyTransferx();
    76                         femmodel->SystemMatricesx(&Kff, &Kfs, &pf,&df, &sediment_kmax);
     85                        femmodel->SystemMatricesx(&Kff,&Kfs,&pf,&df,&sediment_kmax);
    7786                        CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCInefficientAnalysisEnum);
    7887                        Reduceloadx(pf,Kfs,ys); delete Kfs;
    79                         delete uf;
    80                         Solverx(&uf, Kff, pf,uf_int_iter, df, femmodel->parameters);
    81                         delete uf_int_iter; uf_int_iter=uf->Duplicate();
     88                        if(sedcount>1)delete uf_sed;
     89                        Solverx(&uf_sed,Kff,pf,uf_sed_sub_iter,df,femmodel->parameters);
     90                        delete uf_sed_sub_iter;
     91                        uf_sed_sub_iter=uf_sed->Duplicate();
     92                        uf_sed->Copy(uf_sed_sub_iter);
    8293                        if(sedcount>1)delete ug_sed; /*Not on first time to avoid deleting ug_sed_main_iter*/
    8394                        delete Kff; delete pf; delete df;
    8495
    85                         Mergesolutionfromftogx(&ug_sed,uf,ys,femmodel->nodes,femmodel->parameters); delete ys;
     96                        Mergesolutionfromftogx(&ug_sed,uf_sed,ys,femmodel->nodes,femmodel->parameters); delete ys;
    8697                        InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_sed);
    8798                        ConstraintsStatex(&constraints_converged,&num_unstable_constraints, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
     
    116127                        for(;;){
    117128                                femmodel->HydrologyTransferx();
    118                                 femmodel->SystemMatricesx(&Kff, &Kfs, &pf,&df,NULL);
     129                                femmodel->SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL);
    119130                                CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCEfficientAnalysisEnum);
    120131                                Reduceloadx(pf,Kfs,ys); delete Kfs;
    121                                 delete uf;
    122                                 Solverx(&uf, Kff, pf,uf_int_iter, df, femmodel->parameters);
    123                                 delete uf_int_iter; uf_int_iter=uf->Duplicate();
     132                                if(eplcount>1) delete uf_epl;
     133                                Solverx(&uf_epl,Kff,pf,uf_epl_sub_iter,df,femmodel->parameters);
     134                                delete uf_epl_sub_iter;
     135                                uf_epl_sub_iter=uf_epl->Duplicate();
     136                                uf_epl->Copy(uf_epl_sub_iter);
    124137                                if(eplcount>1) delete ug_epl;
    125138                                delete Kff;delete pf;
    126139                                delete df;
    127                                 Mergesolutionfromftogx(&ug_epl,uf,ys,femmodel->nodes,femmodel->parameters); delete ys;
     140                                Mergesolutionfromftogx(&ug_epl,uf_epl,ys,femmodel->nodes,femmodel->parameters); delete ys;
    128141                                InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_epl);
    129142                                ConstraintsStatex(&constraints_converged,&num_unstable_constraints, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
     
    200213        delete ug_epl;
    201214        delete ug_sed;
    202         delete uf;
    203         delete uf_int_iter;
     215        delete uf_sed;
     216        //      delete uf_epl;
     217        delete uf_sed_sub_iter;
     218        delete uf_epl_sub_iter;
    204219        delete ug_sed_main_iter;
    205220        delete ug_epl_main_iter;
Note: See TracChangeset for help on using the changeset viewer.