Changeset 27061


Ignore:
Timestamp:
06/14/22 16:18:05 (3 years ago)
Author:
jdquinn
Message:

CHG: Reverting memory management fix

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

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/SealevelchangeAnalysis.cpp

    r27053 r27061  
    264264
    265265                        parameters->AddObject(new DoubleParam(SolidearthSettingsTimeAccEnum,timeacc));
     266                        parameters->AddObject(new DoubleMatParam(LoadLoveHEnum,love_h,ndeg,precomputednt));
     267                        parameters->AddObject(new DoubleMatParam(LoadLoveKEnum,love_k,ndeg,precomputednt));
     268                        parameters->AddObject(new DoubleMatParam(LoadLoveLEnum,love_l,ndeg,precomputednt));
    266269
    267270                        if (rotation){
     
    271274                                iomodel->FetchData(&love_pmtf_colinear,&dummy,&precomputednt,"md.solidearth.lovenumbers.pmtf_colinear");
    272275                                iomodel->FetchData(&love_pmtf_ortho,&dummy,&precomputednt,"md.solidearth.lovenumbers.pmtf_ortho");
     276
     277                                parameters->AddObject(new DoubleMatParam(LovePolarMotionTransferFunctionColinearEnum,love_pmtf_colinear,1,precomputednt));
     278                                parameters->AddObject(new DoubleMatParam(LovePolarMotionTransferFunctionOrthogonalEnum,love_pmtf_ortho,1,precomputednt));
     279                                parameters->AddObject(new DoubleMatParam(TidalLoveHEnum,love_th,ndeg,precomputednt));
     280                                parameters->AddObject(new DoubleMatParam(TidalLoveKEnum,love_tk,ndeg,precomputednt));
     281                                parameters->AddObject(new DoubleMatParam(TidalLoveLEnum,love_tl,ndeg,precomputednt));
    273282                        }
    274283
     
    586595                                xDelete<IssmDouble>(G_viscoelastic);
    587596                                xDelete<IssmDouble>(G_viscoelastic_local);
    588                                 xDelete<IssmDouble>(G_viscoelastic_interpolated);
    589597                                xDelete<IssmDouble>(U_viscoelastic);
    590598                                xDelete<IssmDouble>(U_viscoelastic_local);
    591                                 xDelete<IssmDouble>(U_viscoelastic_interpolated);
    592599                                if(horiz){
    593600                                        xDelete<IssmDouble>(H_viscoelastic);
    594601                                        xDelete<IssmDouble>(H_viscoelastic_local);
    595                                         xDelete<IssmDouble>(H_viscoelastic_interpolated);
    596602                                }
    597603                                if(rotation){
    598                                         xDelete<IssmDouble>(Love_th2_interpolated);
    599                                         xDelete<IssmDouble>(Love_tk2_interpolated);
    600                                         if (horiz) xDelete<IssmDouble>(Love_tl2_interpolated);
    601604                                        xDelete<IssmDouble>(love_pmtf_colinear);
    602605                                        xDelete<IssmDouble>(love_pmtf_ortho);
    603                                         xDelete<IssmDouble>(Pmtf_col_interpolated);
    604                                         xDelete<IssmDouble>(Pmtf_ortho_interpolated);
    605                                         xDelete<IssmDouble>(Pmtf_z_interpolated);
    606606
    607607                                }
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r27060 r27061  
    63986398        IssmDouble* LoveRothoriz = NULL;
    63996399        IssmDouble*  Grot        = NULL;
    6400 
    64016400        IssmDouble* GUrot        = NULL;
    64026401        IssmDouble* GNrot        = NULL;
     
    65846583                LoveRotRSL  = xNewZeroInit<IssmDouble>(nt);
    65856584                LoveRotU    = xNewZeroInit<IssmDouble>(nt);
    6586                 if (horiz) LoveRothoriz= xNewZeroInit<IssmDouble>(nt);
     6585                LoveRothoriz= xNewZeroInit<IssmDouble>(nt);
    65876586                Grot        = xNewZeroInit<IssmDouble>(3*3*nt); //3 polar motion components * 3 vertices * number of time steps
    65886587                GUrot       = xNewZeroInit<IssmDouble>(3*3*nt);
    6589 
    65906588
    65916589                if (horiz){
     
    66816679                this->inputs->SetArrayInput(SealevelchangeViscousUEnum,this->lid,viscousU,3*nt);
    66826680                this->parameters->SetParam(0,SealevelchangeViscousIndexEnum);
    6683 
    66846681                if(horiz){
    66856682                        viscousN=xNewZeroInit<IssmDouble>(3*nt);
     
    66946691        #ifdef _HAVE_RESTRICT_
    66956692        delete G;
    6696         delete G_gravi_precomputed;
    66976693        if(computeelastic){
    66986694                delete GU;
    6699                 delete G_viscoelastic_precomputed;
    6700                 delete U_viscoelastic_precomputed;
    67016695                if(horiz){
    67026696                        delete GN;
    67036697                        delete GE;
    6704                         delete H_viscoelastic_precomputed;
    67056698                }
    67066699                if(computerotation){
    67076700                        delete Grot;
    67086701                        delete GUrot;
    6709                         delete tide_love_h;
    6710                         delete tide_love_k;
    6711                         delete LoveRotRSL;
    6712                         delete LoveRotU;
    67136702                        if (horiz){
    67146703                                delete GNrot;
    67156704                                delete GErot;
    6716                                 delete tide_love_l;
    6717                                 delete LoveRothoriz;
    6718                         }
    6719                 }
    6720         }
    6721         if(computeviscous){
    6722                 delete viscousRSL;
    6723                 delete viscousU;
    6724 
    6725                 if(horiz){
    6726                         delete viscousN;
    6727                         delete viscousE;
     6705                        }
    67286706                }
    67296707        }
    67306708        #else
    67316709        xDelete(G);
    6732         xDelete(G_gravi_precomputed);
    67336710        if(computeelastic){
    67346711                xDelete(GU);
    6735                 xDelete(G_viscoelastic_precomputed);
    6736                 xDelete(U_viscoelastic_precomputed);
    67376712                if(horiz){
    67386713                        xDelete(GN);
    67396714                        xDelete(GE);
    6740                         xDelete(H_viscoelastic_precomputed);
    67416715                }
    67426716                if(computerotation){
    67436717                        xDelete(Grot);
    67446718                        xDelete(GUrot);
    6745                         xDelete(tide_love_h);
    6746                         xDelete(tide_love_k);
    6747                         xDelete(LoveRotRSL);
    6748                         xDelete(LoveRotU);
    67496719                        if (horiz){
    67506720                                xDelete(GNrot);
    67516721                                xDelete(GErot);
    6752                                 xDelete(tide_love_l);
    6753                                 xDelete(LoveRothoriz);
    6754                         }
    6755                 }
    6756                
    6757         }
    6758         if(computeviscous){
    6759                 xDelete(viscousRSL);
    6760                 xDelete(viscousU);
    6761 
    6762                 if(horiz){
    6763                         xDelete(viscousN);
    6764                         xDelete(viscousE);
     6722                        }
    67656723                }
    67666724        }
     
    73047262        }
    73057263        xDelete<IssmDouble*>(Gsubel);
    7306         xDelete<IssmDouble>(G_gravi_precomputed);
    73077264        if(computeelastic){
    73087265                xDelete<IssmDouble*>(GUsubel);
    7309                 xDelete<IssmDouble>(G_viscoelastic_precomputed);
    7310                 xDelete<IssmDouble>(U_viscoelastic_precomputed);
    73117266                if(horiz){
    7312                         xDelete<IssmDouble>(H_viscoelastic_precomputed);
    73137267                        xDelete<IssmDouble*>(GNsubel);
    73147268                        xDelete<IssmDouble*>(GEsubel);
     
    73247278        /*Inputs:*/
    73257279        IssmDouble* viscousRSL=NULL;
    7326         IssmDouble* viscousSG=NULL;
    73277280        IssmDouble* viscousU=NULL;
    73287281        IssmDouble* viscousN=NULL;
     
    73577310        }
    73587311
    7359         /*Free ressources*/
    7360         xDelete<IssmDouble>(viscousRSL);
    7361         xDelete<IssmDouble>(viscousU);
    7362         xDelete<IssmDouble>(viscousN);
    7363         xDelete<IssmDouble>(viscousE);
    7364 
    73657312}
    73667313/*}}}*/
     
    74467393        barycontrib->Set(this->Sid(),bslcice,bslchydro,bslcbp);
    74477394
    7448         xDelete<IssmDouble>(areae);
    7449 
    74507395}
    74517396/*}}}*/
     
    74557400        IssmDouble* G=NULL;
    74567401        IssmDouble* Grot=NULL;
    7457         IssmDouble** Gsub=NULL;
     7402        IssmDouble* Gsub[SLGEOM_NUMLOADS];
    74587403        bool computefuture=false;
    74597404
     
    74657410        int  nel,nbar;
    74667411
    7467         Gsub=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
    74687412
    74697413        this->parameters->FindParam(&sal,SolidearthSettingsSelfAttractionEnum);
     
    74817425                this->SealevelchangeGxL(sealevelpercpu, G, Gsub, Grot, loads, polarmotionvector, slgeom, nel,percpu=true,SealevelchangeViscousRSLEnum,computefuture=false);
    74827426        }
    7483 
    7484         xDelete<IssmDouble>(G);
    7485         xDelete<IssmDouble>(Grot);
    7486         xDelete<IssmDouble*>(Gsub);
    74877427
    74887428        return;
     
    75387478        IssmDouble* GN=NULL;
    75397479        IssmDouble* Grot=NULL;
    7540         IssmDouble* GSGrot=NULL;
    75417480        IssmDouble* GUrot=NULL;
    75427481        IssmDouble* GNrot=NULL;
    75437482        IssmDouble* GErot=NULL;
    7544         IssmDouble** Gsub;
    7545         IssmDouble** GUsub;
    7546         IssmDouble** GNsub;
    7547         IssmDouble** GEsub;
     7483        IssmDouble* Gsub[SLGEOM_NUMLOADS];
     7484        IssmDouble* GUsub[SLGEOM_NUMLOADS];
     7485        IssmDouble* GNsub[SLGEOM_NUMLOADS];
     7486        IssmDouble* GEsub[SLGEOM_NUMLOADS];
    75487487        bool computefuture=false;
    75497488
     
    75557494        bool percpu=false;
    75567495        bool planethasocean=false;
    7557 
    7558         Gsub=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
    7559         GUsub=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
    7560         GEsub=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
    7561         GNsub=xNew<IssmDouble*>(SLGEOM_NUMLOADS);
    75627496
    75637497        this->parameters->FindParam(&nel,MeshNumberofelementsEnum);
     
    76207554
    76217555        /*Create geoid: */
    7622         for(int i=0;i<NUMVERTICES;i++){
    7623                 SealevelGrd[i]=UGrd[i]+RSLGrd[i];
    7624         }
     7556        for(int i=0;i<NUMVERTICES;i++)SealevelGrd[i]=UGrd[i]+RSLGrd[i];
    76257557
    76267558        /*Create inputs*/
     
    76317563                this->AddInput(BedEastGRDEnum,EGrd,P1Enum);
    76327564        }
    7633 
    7634         /*Free ressources*/
    7635 
    7636         xDelete<IssmDouble>(G);
    7637         xDelete<IssmDouble>(GU);
    7638         xDelete<IssmDouble>(GE);
    7639         xDelete<IssmDouble>(GN);
    7640         xDelete<IssmDouble>(Grot);
    7641         xDelete<IssmDouble>(GSGrot);
    7642         xDelete<IssmDouble>(GUrot);
    7643         xDelete<IssmDouble>(GNrot);
    7644         xDelete<IssmDouble>(GErot);
    7645         xDelete<IssmDouble*>(Gsub);
    7646         xDelete<IssmDouble*>(GUsub);
    7647         xDelete<IssmDouble*>(GEsub);
    7648         xDelete<IssmDouble*>(GNsub);
    76497565
    76507566} /*}}}*/
     
    76617577        int viscousindex=0; //important
    76627578        int viscousnumsteps=1; //important
    7663 
    7664         IssmDouble* grdfieldinterp=NULL;
    7665         IssmDouble* viscoustimes=NULL;
    7666         IssmDouble  final_time;
    7667         IssmDouble  lincoeff;
    7668         IssmDouble  timeacc;
    76697579
    76707580        this->parameters->FindParam(&computeviscous,SolidearthSettingsViscousEnum);
     
    77517661                // 3*: subtract from viscous stack the grdfield that has already been accounted for so we don't add it again at the next time step
    77527662
     7663                IssmDouble* grdfieldinterp=NULL;
     7664                IssmDouble* viscoustimes=NULL;
     7665                IssmDouble  final_time;
     7666                IssmDouble  lincoeff;
     7667                IssmDouble  timeacc;
     7668
    77537669                this->parameters->FindParam(&viscoustimes,NULL,SealevelchangeViscousTimesEnum);
    77547670                this->parameters->FindParam(&final_time,TimesteppingFinalTimeEnum);
     
    77947710                }
    77957711
     7712                /*Free allocatoins:*/
     7713                xDelete<IssmDouble>(viscoustimes);
    77967714        }
    77977715        /*}}}*/
     
    78097727        }
    78107728
    7811 
    7812         /*Free allocatoins:*/
    7813         xDelete<IssmDouble>(grdfield);
    7814         if (computeviscous){
    7815                 xDelete<IssmDouble>(viscoustimes);
    7816                 xDelete<IssmDouble>(viscousfield);
    7817                 if(computefuture){
    7818                         xDelete<IssmDouble>(grdfieldinterp);
    7819                 }
    7820         }
    7821 
    78227729} /*}}}*/
    78237730
     
    78337740
    78347741} /*}}}*/
    7835 
    78367742#endif
    78377743
  • issm/trunk-jpl/src/c/cores/sealevelchange_core.cpp

    r27059 r27061  
    340340                }
    341341
    342                 cout << "DEBUG: Sealevelchange convolution cleared\n";
    343 
    344342                /*retrieve sea level average  and ocean area:*/
    345343                for(Object* & object : femmodel->elements->objects){
     
    347345                        element->SealevelchangeOceanAverage(loads, oceanareas, subelementoceanareas, sealevelpercpu, slgeom);
    348346                }
    349 
    350                 cout << "DEBUG: Sealevelchange Oceanavaverage cleared\n";
    351347
    352348                loads->AssembleSealevelLoads();
     
    364360                ConserveOceanMass(femmodel,loads,barycontrib->Total()/totaloceanarea - oceanaverage,slgeom);
    365361
    366                 cout << "DEBUG: Sealevelchange Conserve ocean mass cleared\n";
    367 
    368362                //broadcast sea level loads
    369363                loads->BroadcastSealevelLoads();
     
    372366                if(slcconvergence(loads->vsealevelloads,oldsealevelloads,eps_rel,eps_abs))break;
    373367
    374                 cout << "DEBUG: Sealevelchange convergence cleared\n";
    375368                //early return?
    376369                if(iterations>=max_nonlinear_iterations)break;
     
    437430        }
    438431
    439         /*Free ressources*/
    440         delete loads;
    441         delete oldsealevelloads;
    442         delete oceanareas;
    443         delete subelementoceanareas;
    444 
    445432}
    446433/*}}}*/
     
    620607        #endif
    621608
    622         xDelete<IssmDouble>(xxe);
    623         xDelete<IssmDouble>(yye);
    624         xDelete<IssmDouble>(zze);
    625         xDelete<IssmDouble>(areae);
    626 
    627609        return;
    628610
     
    690672        femmodel->parameters->AddObject(new DoubleVecParam(ZzeEnum,zze,nel));
    691673        femmodel->parameters->AddObject(new DoubleVecParam(AreaeEnum,areae,nel));
    692 
    693         xDelete<IssmDouble>(xxe);
    694         xDelete<IssmDouble>(yye);
    695         xDelete<IssmDouble>(zze);
    696         xDelete<IssmDouble>(areae);
    697674
    698675        return slgeom;
     
    887864        xDelete<IssmDouble>(m2);
    888865        xDelete<IssmDouble>(m3);
    889 
    890         xDelete<IssmDouble>(pmtf_col);
    891         xDelete<IssmDouble>(pmtf_ortho);
    892         xDelete<IssmDouble>(pmtf_z);
    893866        if (viscous){
    894                 xDelete<IssmDouble>(viscoustimes);
    895                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         xDelete<IssmDouble>(viscouspolarmotion);
    896867                if (computefuture){
    897868                        xDelete<IssmDouble>(m1interp);
     
    964935                /*free allocations:*/
    965936                xDelete<IssmDouble>(viscoustimes);
    966                 if (rotation) xDelete<IssmDouble>(viscouspolarmotion);
    967         }
    968 
    969 
    970 } /*}}}*/
     937        }
     938
     939
     940}
    971941void        ConserveOceanMass(FemModel* femmodel,GrdLoads* loads, IssmDouble offset, SealevelGeometry* slgeom){ /*{{{*/
    972942
     
    1004974        loadcopy=vloadcopy->ToMPISerial();
    1005975
    1006         delete vloadcopy;
    1007976        return loadcopy;
    1008977
Note: See TracChangeset for help on using the changeset viewer.