Changeset 26412


Ignore:
Timestamp:
08/24/21 05:56:37 (4 years ago)
Author:
Mathieu Morlighem
Message:

BUG: memory leak, fixed basal element problem

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatePicox/FloatingiceMeltingRatePicox.cpp

    r26329 r26412  
    164164        for(Object* & object : femmodel->elements->objects){
    165165                Element* element=xDynamicCast<Element*>(object);
     166
     167                /*Check whether we should continue*/
    166168                if(!element->IsOnBase()) continue;
     169                if(!element->IsIceInElement() || !element->IsAllFloating()) continue;
     170                int el_boxid;
     171                element->GetInputValue(&el_boxid,BasalforcingsPicoBoxIdEnum);
     172                if(el_boxid!=boxid) continue;
     173
    167174                Element* basalelement = element->SpawnBasalElement();
    168                 if(!basalelement->IsIceInElement() || !basalelement->IsAllFloating()){
    169                         if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    170                         continue;
    171                 }
    172                 int el_boxid;
    173                 basalelement->GetInputValue(&el_boxid,BasalforcingsPicoBoxIdEnum);
    174                 if(el_boxid!=boxid) continue;
    175175
    176176                Input* tocs_input=basalelement->GetInput(BasalforcingsPicoSubShelfOceanTempEnum); _assert_(tocs_input);
     
    185185                toc_weighted_avg[basinid]+=toc*area;
    186186                soc_weighted_avg[basinid]+=soc*area;
     187
    187188                if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    188189        }
     
    207208                for(Object* & object : femmodel->elements->objects){
    208209                        Element* element=xDynamicCast<Element*>(object);
     210
     211                        /*Check whether we should continue or not*/
    209212                        if(!element->IsOnBase()) continue;
     213                        if(!element->IsIceInElement() || !element->IsAllFloating()) continue;
     214                        int el_boxid;
     215                        element->GetInputValue(&el_boxid,BasalforcingsPicoBoxIdEnum);
     216                        if(el_boxid!=boxid) continue;
     217
    210218                        Element* basalelement = element->SpawnBasalElement();
    211                         if(!basalelement->IsIceInElement() || !basalelement->IsAllFloating()) continue;
    212                         int el_boxid;
    213                         basalelement->GetInputValue(&el_boxid,BasalforcingsPicoBoxIdEnum);
    214                         if(el_boxid!=boxid) continue;
    215 
    216219                Input* overturnings_input=basalelement->GetInput(BasalforcingsPicoSubShelfOceanOverturningEnum); _assert_(overturnings_input);
    217220
     
    223226                        overturning_weighted_avg[basinid]+=overturning*area;
    224227                        basalelement->FindParam(&domaintype,DomainTypeEnum);
     228
    225229                        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    226230                }
Note: See TracChangeset for help on using the changeset viewer.