Changeset 26090


Ignore:
Timestamp:
03/12/21 17:35:58 (4 years ago)
Author:
Mathieu Morlighem
Message:

CHG: automatically delete collapsed element without looking at domainttype

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

Legend:

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

    r26047 r26090  
    151151        xDelete<IssmDouble>(basis);
    152152        xDelete<IssmDouble>(dbasis);
    153         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     153        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    154154        delete gauss;
    155155        return pe;
  • TabularUnified issm/trunk-jpl/src/c/analyses/AdjointHorizAnalysis.cpp

    r26047 r26090  
    271271        delete analysis;
    272272        if(incomplete_adjoint){
    273                 if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     273                if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    274274                return Ke;
    275275        }
     
    319319        xDelete<IssmDouble>(dbasis);
    320320        xDelete<IssmDouble>(xyz_list);
    321         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     321        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    322322        return Ke;
    323323}/*}}}*/
     
    10681068        xDelete<IssmDouble>(xyz_list);
    10691069        xDelete<IssmDouble>(basis);
    1070         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     1070        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    10711071        delete gauss;
    10721072        return pe;
     
    12531253        xDelete<int>(vertexpidlist);
    12541254        delete gauss;
    1255         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     1255        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    12561256}/*}}}*/
    12571257void           AdjointHorizAnalysis::GradientJBbarL1L2(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
     
    13651365        xDelete<int>(vertexpidlist);
    13661366        delete gauss;
    1367         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     1367        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    13681368}/*}}}*/
    13691369void           AdjointHorizAnalysis::GradientJBFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
     
    16551655        xDelete<int>(vertexpidlist);
    16561656        delete gauss;
    1657         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     1657        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    16581658}/*}}}*/
    16591659void           AdjointHorizAnalysis::GradientJDragGradient(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
     
    17471747        xDelete<int>(vertexpidlist);
    17481748        delete gauss;
    1749         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     1749        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    17501750
    17511751}/*}}}*/
     
    20662066        delete gauss;
    20672067        delete friction;
    2068         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     2068        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    20692069}/*}}}*/
    20702070void           AdjointHorizAnalysis::GradientJDragHydroFS(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
     
    23592359        delete gauss;
    23602360        delete friction;
    2361         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     2361        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    23622362}/*}}}*/
    23632363void           AdjointHorizAnalysis::GradientJDSSA(Element* element,Vector<IssmDouble>* gradient,int control_interp,int control_index){/*{{{*/
     
    24412441        xDelete<int>(vertexpidlist);
    24422442        delete gauss;
    2443         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     2443        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    24442444}/*}}}*/
    24452445void           AdjointHorizAnalysis::InputUpdateFromSolution(IssmDouble* solution,Element* element){/*{{{*/
  • TabularUnified issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp

    r26047 r26090  
    149149        int domaintype;
    150150        element->FindParam(&domaintype,DomainTypeEnum);
    151         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     151        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    152152        return Ke;
    153153}/*}}}*/
     
    337337        int domaintype;
    338338        element->FindParam(&domaintype,DomainTypeEnum);
    339         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     339        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    340340        return pe;
    341341}/*}}}*/
  • TabularUnified issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.cpp

    r26047 r26090  
    234234        xDelete<IssmDouble>(Ny);
    235235        delete gauss;
    236         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     236        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    237237        return pe;
    238238}/*}}}*/
  • TabularUnified issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp

    r26047 r26090  
    270270        xDelete<IssmDouble>(D);
    271271        delete gauss;
    272         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     272        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    273273        return Ke;
    274274}/*}}}*/
     
    344344        xDelete<IssmDouble>(basis);
    345345        delete gauss;
    346         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     346        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    347347        return pe;
    348348
  • TabularUnified issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp

    r26047 r26090  
    247247        xDelete<IssmDouble>(D);
    248248        delete gauss;
    249         if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
     249        if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
    250250        return Ke;
    251251}/*}}}*/
     
    316316        xDelete<IssmDouble>(basis);
    317317        delete gauss;
    318         if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
     318        if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
    319319        return pe;
    320320
  • TabularUnified issm/trunk-jpl/src/c/analyses/GLheightadvectionAnalysis.cpp

    r26047 r26090  
    178178        xDelete<IssmDouble>(dbasis);
    179179        delete gauss;
    180         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     180        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    181181        return Ke;
    182182
  • TabularUnified issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp

    r26047 r26090  
    189189        /*Check that all nodes are active, else return empty matrix*/
    190190        if(!active_element) {
    191                 if(domaintype!=Domain2DhorizontalEnum){
    192                         basalelement->DeleteMaterials();
    193                         delete basalelement;
    194                 }
     191                if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    195192                return NULL;
    196193        }
     
    250247        xDelete<IssmDouble>(dbasis);
    251248        delete gauss;
    252         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     249        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    253250        return Ke;
    254251}/*}}}*/
     
    277274        /*Check that all nodes are active, else return empty matrix*/
    278275        if(!active_element) {
    279                 if(domaintype!=Domain2DhorizontalEnum){
    280                         basalelement->DeleteMaterials();
    281                         delete basalelement;
    282                 }
     276                if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    283277                return NULL;
    284278        }
     
    379373        xDelete<IssmDouble>(basis);
    380374        delete gauss;
    381         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     375        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    382376        return pe;
    383377}/*}}}*/
     
    428422        xDelete<IssmDouble>(eplHeads);
    429423        xDelete<int>(doflist);
    430         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     424        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    431425} /*}}}*/
    432426void HydrologyDCEfficientAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
     
    736730        element->AddBasalInput(HydrologydcEplThicknessSubstepEnum,epl_thickness,basalelement->GetElementType());
    737731
    738         if(domaintype!=Domain2DhorizontalEnum){
    739                 basalelement->DeleteMaterials();
    740                 delete basalelement;
    741         }
     732        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    742733        xDelete<IssmDouble>(epl_thickness);
    743734        xDelete<IssmDouble>(old_active);
     
    791782                /*Do not do anything: at least one node is active for this element but this element is not solved for*/
    792783        }
    793         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     784        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    794785        xDelete<IssmDouble>(active);
    795786}
  • TabularUnified issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp

    r26047 r26090  
    212212        /*Check that all nodes are active, else return empty matrix*/
    213213        if(!thawed_element) {
    214                 if(domaintype!=Domain2DhorizontalEnum){
    215                         basalelement->DeleteMaterials();
    216                         delete basalelement;
    217                 }
     214                if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    218215                return NULL;
    219216        }
     
    283280        xDelete<IssmDouble>(dbasis);
    284281        delete gauss;
    285         if(domaintype!=Domain2DhorizontalEnum){
    286                 basalelement->DeleteMaterials();
    287                 delete basalelement;
    288         }
     282        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    289283        return Ke;
    290284}/*}}}*/
     
    313307        /*Check that all nodes are active, else return empty matrix*/
    314308        if(!thawed_element) {
    315         if(domaintype!=Domain2DhorizontalEnum){
    316                         basalelement->DeleteMaterials();
    317                         delete basalelement;
    318                 }
     309                if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    319310                return NULL;
    320311        }
     
    440431        xDelete<IssmDouble>(basis);
    441432        delete gauss;
    442         if(domaintype!=Domain2DhorizontalEnum){
    443                 basalelement->DeleteMaterials();
    444                 delete basalelement;
    445         }
     433        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    446434        return pe;
    447435}/*}}}*/
     
    535523        xDelete<IssmDouble>(pressure);
    536524        xDelete<int>(doflist);
    537         if(domaintype!=Domain2DhorizontalEnum){
    538                 basalelement->DeleteMaterials();
    539                 delete basalelement;
    540         }
     525        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    541526}/*}}}*/
    542527void HydrologyDCInefficientAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
     
    738723        }
    739724
    740         if(domaintype!=Domain2DhorizontalEnum){
    741                 basalelement->DeleteMaterials();
    742                 delete basalelement;
    743         }
     725        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    744726        xDelete<IssmDouble>(meltingrate);
    745727        xDelete<IssmDouble>(groundedice);
     
    807789                /*Do not do anything: at least one node is active for this element but this element is not solved for*/
    808790        }
    809         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     791        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    810792        xDelete<IssmDouble>(active);
    811793}
  • TabularUnified issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp

    r26047 r26090  
    117117        xDelete<IssmDouble>(basis);
    118118        delete gauss;
    119         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     119        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    120120        return Ke;
    121121}/*}}}*/
     
    193193        xDelete<IssmDouble>(basis);
    194194        delete gauss;
    195         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     195        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    196196        return pe;
    197197}/*}}}*/
  • TabularUnified issm/trunk-jpl/src/c/analyses/L2ProjectionEPLAnalysis.cpp

    r26047 r26090  
    112112        /* Check that all nodes are active, else return empty matrix */
    113113        if(!active_element){
    114                 if(domaintype!=Domain2DhorizontalEnum){
    115                         basalelement->DeleteMaterials();
    116                         delete basalelement;
    117                 }
     114                if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    118115                return NULL;
    119116        }
     
    147144        xDelete<IssmDouble>(basis);
    148145        delete gauss;
    149         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     146        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    150147        return Ke;
    151148}/*}}}*/
     
    174171        /*Check that all nodes are active, else return empty matrix*/
    175172        if(!active_element) {
    176                 if(domaintype!=Domain2DhorizontalEnum){
    177                         basalelement->DeleteMaterials();
    178                         delete basalelement;
    179                 }
     173                if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    180174                return NULL;
    181175        }
     
    218212        xDelete<IssmDouble>(basis);
    219213        delete gauss;
    220         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     214        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    221215        return pe;
    222216}/*}}}*/
  • TabularUnified issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp

    r26047 r26090  
    331331        xDelete<IssmDouble>(Bprime);
    332332        delete gauss;
    333         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     333        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    334334        return Ke;
    335335}/*}}}*/
     
    375375                xDelete<IssmDouble>(basis);
    376376                basalelement->FindParam(&domaintype,DomainTypeEnum);
    377                 if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     377                if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    378378                delete gauss;
    379379        }
  • TabularUnified issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp

    r26089 r26090  
    292292        int domaintype;
    293293        element->FindParam(&domaintype,DomainTypeEnum);
    294         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     294        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    295295        return Ke;
    296296}/*}}}*/
     
    584584        }
    585585
    586         int domaintype;
    587         element->FindParam(&domaintype,DomainTypeEnum);
    588         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     586        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    589587        return pe;
    590588}/*}}}*/
     
    927925        xDelete<IssmDouble>(bed);
    928926        xDelete<int>(doflist);
    929         if(domaintype!=Domain2DhorizontalEnum && domaintype!=Domain3DsurfaceEnum){basalelement->DeleteMaterials(); delete basalelement;};
     927        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    930928}/*}}}*/
    931929void           MasstransportAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/
  • TabularUnified issm/trunk-jpl/src/c/analyses/MeltingAnalysis.cpp

    r26047 r26090  
    118118        xDelete<IssmDouble>(basis);
    119119        delete gauss;
    120         basalelement->DeleteMaterials(); delete basalelement;
     120        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    121121        return Ke;
    122122}/*}}}*/
  • TabularUnified issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp

    r26047 r26090  
    13921392
    13931393        /*clean-up and return*/
    1394         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     1394        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    13951395        return Ke;
    13961396
     
    14301430
    14311431        /*clean-up and return*/
    1432         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     1432        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    14331433        delete Ke1;
    14341434        delete Ke2;
     
    17071707
    17081708        /*clean-up and return*/
    1709         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     1709        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    17101710        delete pe1;
    17111711        delete pe2;
     
    21022102        xDelete<IssmDouble>(xyz_list);
    21032103        xDelete<int>(doflist);
    2104         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     2104        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    21052105}/*}}}*/
    21062106#ifdef DISCSLOPE
     
    24082408
    24092409        /*clean-up and return*/
    2410         basalelement->DeleteMaterials(); delete basalelement;
     2410        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    24112411        return Ke;
    24122412}/*}}}*/
     
    24682468        delete gauss;
    24692469        delete gauss_base;
    2470         basalelement->DeleteMaterials(); delete basalelement;
     2470        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    24712471        xDelete<IssmDouble>(xyz_list);
    24722472        xDelete<IssmDouble>(dbasis);
     
    25012501
    25022502        /*clean-up and return*/
    2503         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     2503        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    25042504        delete pe1;
    25052505        delete pe2;
     
    27022702        xDelete<IssmDouble>(xyz_list);
    27032703        xDelete<int>(doflist);
    2704         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     2704        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    27052705}/*}}}*/
    27062706
     
    27302730
    27312731        /*clean-up and return*/
    2732         basalelement->DeleteMaterials(); delete basalelement;
     2732        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    27332733        return Ke;
    27342734}/*}}}*/
     
    27912791        delete gauss;
    27922792        delete gauss_base;
    2793         basalelement->DeleteMaterials(); delete basalelement;
     2793        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    27942794        xDelete<IssmDouble>(xyz_list);
    27952795        xDelete<IssmDouble>(dbasis);
     
    28252825
    28262826        /*clean-up and return*/
    2827         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     2827        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    28282828        delete pe1;
    28292829        delete pe2;
     
    30303030        xDelete<IssmDouble>(xyz_list);
    30313031        xDelete<int>(doflist);
    3032         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     3032        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    30333033}/*}}}*/
    30343034
     
    72757275        Element* basalelement = element->SpawnBasalElement();
    72767276        ElementMatrix* Ke=CreateKMatrixSSAFriction(basalelement);
    7277         basalelement->DeleteMaterials(); delete basalelement;
     7277        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    72787278
    72797279        /*clean-up and return*/
  • TabularUnified issm/trunk-jpl/src/c/classes/Cfdragcoeffabsgrad.cpp

    r25539 r26090  
    161161
    162162        /*clean up and Return: */
    163         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     163        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    164164        xDelete<IssmDouble>(xyz_list);
    165165        delete gauss;
  • TabularUnified issm/trunk-jpl/src/c/classes/Cfsurfacelogvel.cpp

    r25539 r26090  
    198198
    199199        /*clean up and Return: */
    200         if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
     200        if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
    201201        xDelete<IssmDouble>(xyz_list);
    202202        delete gauss;
  • TabularUnified issm/trunk-jpl/src/c/classes/Cfsurfacesquare.cpp

    r25539 r26090  
    187187
    188188        /*clean up and Return: */
    189         if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
     189        if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
    190190        xDelete<IssmDouble>(xyz_list);
    191191        delete gauss;
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/Element.h

    r26073 r26090  
    342342           virtual Element*   SpawnBasalElement(bool depthaverage_materials=false)=0;
    343343                virtual Element*   SpawnTopElement(void)=0;
     344                virtual bool       IsSpawnedElement(void)=0;
    344345                virtual IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa)=0;
    345346                virtual void       StabilizationParameterAnisotropic(IssmDouble* tau_parameter_anisotropic, IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble hx, IssmDouble hy, IssmDouble hz, IssmDouble kappa)=0;
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/Penta.cpp

    r26057 r26090  
    36233623}
    36243624/*}}}*/
     3625bool       Penta::IsSpawnedElement(void){/*{{{*/
     3626
     3627        /*Penta cannot be collapsed elements*/
     3628        return false;
     3629
     3630}/*}}}*/
    36253631IssmDouble Penta::StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){/*{{{*/
    36263632        /*Compute stabilization parameter*/
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/Penta.h

    r26073 r26090  
    175175           Element*       SpawnBasalElement(bool depthaverage_materials);
    176176                Element*       SpawnTopElement(void);
     177                bool           IsSpawnedElement(void);
    177178                Tria*            SpawnTria(int index1,int index2,int index3);
    178179                IssmDouble     StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa);
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/Seg.cpp

    r25508 r26090  
    362362        return isicefront;
    363363}/*}}}*/
     364bool       Seg::IsSpawnedElement(void){/*{{{*/
     365
     366        if(this->iscollapsed!=0){
     367                return true;
     368        }
     369
     370        return false;
     371
     372}/*}}}*/
    364373void       Seg::JacobianDeterminant(IssmDouble* pJdet,IssmDouble* xyz_list,Gauss* gauss){/*{{{*/
    365374
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/Seg.h

    r26073 r26090  
    139139           Element*    SpawnBasalElement(bool depthaverage_materials){_error_("not implemented yet");};
    140140                Element*    SpawnTopElement(void){_error_("not implemented yet");};
     141                bool        IsSpawnedElement(void);
    141142                void       SetElementInput(int enum_in,IssmDouble value, int type){_error_("not implemented yet");};
    142143                IssmDouble  StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){_error_("not implemented yet");};
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tetra.cpp

    r25508 r26090  
    786786        this->FaceOnSurfaceIndices(&index1,&index2,&index3);
    787787        return SpawnTria(index1,index2,index3);
     788}/*}}}*/
     789bool       Tetra::IsSpawnedElement(void){/*{{{*/
     790
     791   /*Tetras cannot be collapsed elements*/
     792   return false;
     793
    788794}/*}}}*/
    789795Tria*    Tetra::SpawnTria(int index1,int index2,int index3){/*{{{*/
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tetra.h

    r26073 r26090  
    147147           Element*    SpawnBasalElement(bool depthaverage_materials);
    148148                Element*    SpawnTopElement(void);
     149                bool        IsSpawnedElement(void);
    149150                Tria*       SpawnTria(int index1,int index2,int index3);
    150151                IssmDouble  StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa){_error_("not implemented yet");};
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r26088 r26090  
    42704270}
    42714271/*}}}*/
     4272bool       Tria::IsSpawnedElement(void){/*{{{*/
     4273
     4274        if(this->iscollapsed!=0){
     4275                return true;
     4276        }
     4277
     4278        return false;
     4279
     4280}/*}}}*/
    42724281void       Tria::StrainRateparallel(){/*{{{*/
    42734282
  • TabularUnified issm/trunk-jpl/src/c/classes/Elements/Tria.h

    r26073 r26090  
    134134           Element*    SpawnBasalElement(bool depthaverage_materials);
    135135                Element*    SpawnTopElement(void);
     136                bool        IsSpawnedElement(void);
    136137                void                    StrainRateparallel();
    137138                void                    StrainRateperpendicular();
  • TabularUnified issm/trunk-jpl/src/c/classes/FemModel.cpp

    r26052 r26090  
    11711171                Element* basalelement = element->SpawnBasalElement();
    11721172                basalelement->WriteFieldIsovalueSegment(segments,fieldenum,fieldvalue);
    1173                 if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     1173                if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    11741174        }
    11751175
     
    52115211                }
    52125212                xDelete<IssmDouble>(base);
    5213                 if(domaintype!=Domain2DhorizontalEnum){
    5214                         basalelement->DeleteMaterials();
    5215                         delete basalelement;
    5216                 }
     5213                if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    52175214        }
    52185215        xDelete<IssmDouble>(serial_active);
  • TabularUnified issm/trunk-jpl/src/c/modules/DragCoefficientAbsGradientx/DragCoefficientAbsGradientx.cpp

    r25539 r26090  
    9393
    9494        /*clean up and Return: */
    95         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     95        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    9696        xDelete<IssmDouble>(xyz_list);
    9797        delete gauss;
  • TabularUnified issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatePicox/FloatingiceMeltingRatePicox.cpp

    r25539 r26090  
    116116                if(!element->IsOnBase()) continue;
    117117                Element* basalelement = element->SpawnBasalElement();
    118                 if(!basalelement->IsIceInElement() || !basalelement->IsFloating()) continue;
     118                if(!basalelement->IsIceInElement() || !basalelement->IsFloating()){
     119                        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
     120                        continue;
     121                }
    119122                basalelement->GetInputValue(&boxid,BasalforcingsPicoBoxIdEnum);
    120123                basalelement->GetInputValue(&basinid,BasalforcingsPicoBasinIdEnum);
    121124                boxareas[basinid*maxbox+boxid]+=basalelement->GetHorizontalSurfaceArea();
    122                 basalelement->FindParam(&domaintype,DomainTypeEnum);
    123                 if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     125                if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    124126        }
    125127
     
    164166                if(!element->IsOnBase()) continue;
    165167                Element* basalelement = element->SpawnBasalElement();
    166                 if(!basalelement->IsIceInElement() || !basalelement->IsFloating()) continue;
     168                if(!basalelement->IsIceInElement() || !basalelement->IsFloating()){
     169                        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
     170                        continue;
     171                }
    167172                int el_boxid;
    168173                basalelement->GetInputValue(&el_boxid,BasalforcingsPicoBoxIdEnum);
     
    180185                toc_weighted_avg[basinid]+=toc*area;
    181186                soc_weighted_avg[basinid]+=soc*area;
    182                 basalelement->FindParam(&domaintype,DomainTypeEnum);
    183                 if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     187                if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    184188        }
    185189
     
    219223                        overturning_weighted_avg[basinid]+=overturning*area;
    220224                        basalelement->FindParam(&domaintype,DomainTypeEnum);
    221                         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     225                        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    222226                }
    223227
  • TabularUnified issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp

    r25539 r26090  
    172172                        /*Delete spawned element if we are in 3D*/
    173173                        basalelement->FindParam(&domaintype,DomainTypeEnum);
    174                         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     174                        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    175175                }
    176176
  • TabularUnified issm/trunk-jpl/src/c/modules/RheologyBbarAbsGradientx/RheologyBbarAbsGradientx.cpp

    r25571 r26090  
    7979
    8080        /*clean up and Return: */
    81         if(domaintype!=Domain2DhorizontalEnum){basalelement->DeleteMaterials(); delete basalelement;};
     81        if(basalelement->IsSpawnedElement()){basalelement->DeleteMaterials(); delete basalelement;};
    8282        xDelete<IssmDouble>(xyz_list);
    8383        delete gauss;
  • TabularUnified issm/trunk-jpl/src/c/modules/SurfaceAbsVelMisfitx/SurfaceAbsVelMisfitx.cpp

    r25539 r26090  
    101101
    102102        /*clean up and Return: */
    103         if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
     103        if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
    104104        xDelete<IssmDouble>(xyz_list);
    105105        delete gauss;
  • TabularUnified issm/trunk-jpl/src/c/modules/SurfaceAverageVelMisfitx/SurfaceAverageVelMisfitx.cpp

    r25539 r26090  
    113113
    114114        /*clean up and Return: */
    115         if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
     115        if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
    116116        xDelete<IssmDouble>(xyz_list);
    117117        delete gauss;
  • TabularUnified issm/trunk-jpl/src/c/modules/SurfaceLogVelMisfitx/SurfaceLogVelMisfitx.cpp

    r25539 r26090  
    110110
    111111        /*clean up and Return: */
    112         if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
     112        if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
    113113        xDelete<IssmDouble>(xyz_list);
    114114        delete gauss;
  • TabularUnified issm/trunk-jpl/src/c/modules/SurfaceLogVxVyMisfitx/SurfaceLogVxVyMisfitx.cpp

    r25539 r26090  
    110110
    111111        /*clean up and Return: */
    112         if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
     112        if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
    113113        xDelete<IssmDouble>(xyz_list);
    114114        delete gauss;
  • TabularUnified issm/trunk-jpl/src/c/modules/SurfaceRelVelMisfitx/SurfaceRelVelMisfitx.cpp

    r25539 r26090  
    111111
    112112        /*clean up and Return: */
    113         if(domaintype!=Domain2DhorizontalEnum){topelement->DeleteMaterials(); delete topelement;};
     113        if(topelement->IsSpawnedElement()){topelement->DeleteMaterials(); delete topelement;};
    114114        xDelete<IssmDouble>(xyz_list);
    115115        delete gauss;
Note: See TracChangeset for help on using the changeset viewer.