Changeset 24359


Ignore:
Timestamp:
11/19/19 14:57:47 (5 years ago)
Author:
Mathieu Morlighem
Message:

CHG: fixinf SLR

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

Legend:

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

    r24357 r24359  
    21312131        Input2* input=this->GetInput2(MaskIceLevelsetEnum); _assert_(input);
    21322132        return (input->GetInputMin()<0.);
     2133}
     2134/*}}}*/
     2135bool       Element::IsIceOnlyInElement(){/*{{{*/
     2136        Input2* input=this->GetInput2(MaskIceLevelsetEnum); _assert_(input);
     2137        return (input->GetInputMax()<0.);
    21332138}
    21342139/*}}}*/
  • issm/trunk-jpl/src/c/classes/Elements/Element.h

    r24351 r24359  
    146146                bool               IsOnSurface();
    147147                bool               IsIceInElement();
     148                bool               IsIceOnlyInElement();
    148149                bool               IsLandInElement();
    149150                void               Ismip6FloatingiceMeltingRate();
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r24358 r24359  
    30123012
    30133013        if(!IsIceInElement())return 0.;
    3014         //if(!(this->inputs->Max(MaskIceLevelsetEnum)<0)) return 0;
     3014        //if(!IsIceOnlyInElement()) return 0;
    30153015
    30163016        int domaintype;
     
    41144114
    41154115        /*Add input*/
    4116         this->inputs->AddInput(new TriaInput(CalvingMeltingrateEnum,&meltrates[0],P1Enum));
     4116        this->AddInput2(CalvingMeltingrateEnum,&meltrates[0],P1Enum);
    41174117
    41184118        /*Cleanup and return*/
     
    55925592void    Tria::SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,IssmDouble eartharea){/*{{{*/
    55935593        /*early return if we are not on an ice cap OR ocean:*/
    5594         if(!(this->inputs->Max(MaskIceLevelsetEnum)<0) && !IsWaterInElement()){
     5594        if(!IsIceOnlyInElement() && !IsWaterInElement()){
    55955595                dI_list[0] = 0.0; // this is important!!!
    55965596                dI_list[1] = 0.0; // this is important!!!
     
    56635663                dI_list[2] = +4*PI*(rho_water*S*area)*pow(re,4)*(1-pow(sin(late),2))/eartharea;
    56645664        }
    5665         else if(this->inputs->Max(MaskIceLevelsetEnum)<0){
     5665        else if(IsIceOnlyInElement()){
    56665666                IssmDouble rho_ice, I;
    56675667
     
    57135713
    57145714        /*early return if we are not on an ice cap:*/
    5715         if(!(this->inputs->Max(MaskIceLevelsetEnum)<=0)){
    5716                 constant=0; this->inputs->AddInput(new TriaInput(SealevelEustaticMaskEnum,&constant,P0Enum));
     5715        if(!IsIceOnlyInElement()){
     5716                constant=0; this->AddInput2(SealevelEustaticMaskEnum,&constant,P0Enum);
    57175717                *peustatic=0; //do not forget to assign this pointer, otherwise, global eustatic will be garbage!
    57185718                return;
     
    57205720
    57215721        /*early return if we are fully floating: */
    5722         if (this->inputs->Max(MaskGroundediceLevelsetEnum)<=0){
    5723                 constant=0; this->inputs->AddInput(new TriaInput(SealevelEustaticMaskEnum,&constant,P0Enum));
     5722        Input2* gr_input=this->GetInput2(MaskGroundediceLevelsetEnum); _assert_(gr_input);
     5723        if (gr_input->GetInputMax()<=0){
     5724                constant=0; this->AddInput2(SealevelEustaticMaskEnum,&constant,P0Enum);
    57245725                *peustatic=0; //do not forget to assign this pointer, otherwise, global eustatic will be garbage!
    57255726                return;
     
    57275728
    57285729        /*If we are here, we are on ice that is fully grounded or half-way to floating: */
    5729         if ((this->inputs->Min(MaskGroundediceLevelsetEnum))<0){
     5730        if ((gr_input->GetInputMin())<0){
    57305731                notfullygrounded=true; //used later on.
    57315732        }
    57325733
    57335734        /*Inform mask: */
    5734         constant=1; this->inputs->AddInput(new TriaInput(SealevelEustaticMaskEnum,&constant,P0Enum));
     5735        constant=1; this->AddInput2(SealevelEustaticMaskEnum,&constant,P0Enum);
    57355736
    57365737        /*recover material parameters: */
     
    59165917        /*early return if we are not on the ocean:*/
    59175918        if (!IsWaterInElement()){
    5918                 constant=0; this->inputs->AddInput(new TriaInput(SealevelEustaticOceanMaskEnum,&constant,P0Enum));
     5919                constant=0; this->AddInput2(SealevelEustaticOceanMaskEnum,&constant,P0Enum);
    59195920                return;
    59205921        }
    5921         constant=1; this->inputs->AddInput(new TriaInput(SealevelEustaticOceanMaskEnum,&constant,P0Enum));
     5922        constant=1; this->AddInput2(SealevelEustaticOceanMaskEnum,&constant,P0Enum);
    59225923
    59235924        /*recover computational flags: */
     
    60686069
    60696070        /*early return if we are not on the ocean or on an ice cap:*/
    6070         if(!(this->inputs->Max(MaskIceLevelsetEnum)<0) && !IsWaterInElement()) return;
     6071        if(!IsIceOnlyInElement() && !IsWaterInElement()) return;
    60716072
    60726073        /*early return if we are fully floating: */
    6073         if (this->inputs->Max(MaskGroundediceLevelsetEnum)<=0)return;
     6074        Input2* gr_input=this->GetInput2(MaskGroundediceLevelsetEnum); _assert_(gr_input);
     6075        if(gr_input->GetInputMax()<=0)return;
    60746076
    60756077        /*recover computational flags: */
     
    62026204
    62036205                /*Add all components to the pUp solution vectors:*/
    6204                 if(this->inputs->Max(MaskIceLevelsetEnum)<0){
     6206                if(IsIceOnlyInElement()){
    62056207                        U_values[i]+=3*rho_ice/rho_earth*area/eartharea*I*U_elastic[i];
    62066208                        if(horiz){
Note: See TracChangeset for help on using the changeset viewer.