Changeset 15409


Ignore:
Timestamp:
07/03/13 11:26:45 (12 years ago)
Author:
bdef
Message:

BUG: Fixing Memory Leaks

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp

    r15407 r15409  
    4040
    4141        /*Recover parameters: */
    42         femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);//FIXME
     42        femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
    4343        femmodel->parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
    4444        femmodel->parameters->FindParam(&eps_hyd,HydrologydcRelTolEnum);
     
    4646        hydro_maxiter=150;
    4747        hydrocount=1;
    48 
    49         /*Iteration on the two layers*/
    50         femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
     48        hydroconverged=false;
     49
     50        /*Retrieve inputs as the initial state for the non linear iteration*/
     51        //femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
    5152        GetSolutionFromInputsx(&ug_sed, femmodel->elements, femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters);
    5253        Reducevectorgtofx(&uf_sed, ug_sed, femmodel->nodes,femmodel->parameters);
     54       
    5355        if(isefficientlayer) {
    5456                femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
    5557                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);
     58                Reducevectorgtofx(&uf_epl, ug_epl, femmodel->nodes,femmodel->parameters);
    5759        }
    5860
    59         hydroconverged=false;
     61        /*Iteration on the two layers*/
    6062        for(;;){
    6163                sedcount=1;
    6264                eplcount=1;
    6365                //save pointer to old velocity
    64                 delete ug_sed_main_iter;
    6566                delete uf_sed_sub_iter;
    6667                ug_sed_main_iter=ug_sed;
    6768                uf_sed_sub_iter=uf_sed;
    6869                if(isefficientlayer){
    69                         delete ug_epl_main_iter;
    70                         delete uf_sed_sub_iter;
     70                        delete uf_epl_sub_iter;
    7171                        ug_epl_main_iter=ug_epl;
    72                         uf_sed_sub_iter=uf_epl;
     72                        uf_epl_sub_iter=uf_epl;
    7373                }
    7474
     
    8888                        if(sedcount>1)delete uf_sed;
    8989                        Solverx(&uf_sed,Kff,pf,uf_sed_sub_iter,df,femmodel->parameters);
    90                         delete uf_sed_sub_iter;
     90                        delete Kff; delete pf; delete uf_sed_sub_iter; delete df;
    9191                        uf_sed_sub_iter=uf_sed->Duplicate();
    9292                        uf_sed->Copy(uf_sed_sub_iter);
    9393                        if(sedcount>1)delete ug_sed; /*Not on first time to avoid deleting ug_sed_main_iter*/
    94                         delete Kff; delete pf; delete df;
    95 
    9694                        Mergesolutionfromftogx(&ug_sed,uf_sed,ys,femmodel->nodes,femmodel->parameters); delete ys;
    9795                        InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_sed);
     
    123121                        femmodel->HydrologyEPLupdateDomainx();
    124122                        femmodel->parameters->SetParam(HydrologyEfficientEnum,HydrologyLayerEnum);
     123
     124                        /*Iteration on the EPL layer*/
    125125                        eplconverged = false;
    126                         /*Iteration on the EPL layer*/
    127126                        for(;;){
    128127                                femmodel->HydrologyTransferx();
     
    130129                                CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCEfficientAnalysisEnum);
    131130                                Reduceloadx(pf,Kfs,ys); delete Kfs;
    132                                 if(eplcount>1) delete uf_epl;
     131                                if(sedcount>1) delete uf_epl;
    133132                                Solverx(&uf_epl,Kff,pf,uf_epl_sub_iter,df,femmodel->parameters);
    134                                 delete uf_epl_sub_iter;
     133                                delete Kff; delete pf; delete uf_epl_sub_iter; delete df;
    135134                                uf_epl_sub_iter=uf_epl->Duplicate();
    136135                                uf_epl->Copy(uf_epl_sub_iter);
    137136                                if(eplcount>1) delete ug_epl;
    138                                 delete Kff;delete pf;
    139                                 delete df;
    140137                                Mergesolutionfromftogx(&ug_epl,uf_epl,ys,femmodel->nodes,femmodel->parameters); delete ys;
    141138                                InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_epl);
     
    207204                if(hydroconverged)break;
    208205        }
     206       
    209207        InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_sed);
    210208        if(isefficientlayer)InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_epl);
     
    214212        delete ug_sed;
    215213        delete uf_sed;
    216         //      delete uf_epl;
     214        delete uf_epl;
    217215        delete uf_sed_sub_iter;
    218216        delete uf_epl_sub_iter;
    219         delete ug_sed_main_iter;
    220         delete ug_epl_main_iter;
    221217        delete dug;
    222218}
Note: See TracChangeset for help on using the changeset viewer.