Changeset 24359
- Timestamp:
- 11/19/19 14:57:47 (5 years ago)
- 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 2131 2131 Input2* input=this->GetInput2(MaskIceLevelsetEnum); _assert_(input); 2132 2132 return (input->GetInputMin()<0.); 2133 } 2134 /*}}}*/ 2135 bool Element::IsIceOnlyInElement(){/*{{{*/ 2136 Input2* input=this->GetInput2(MaskIceLevelsetEnum); _assert_(input); 2137 return (input->GetInputMax()<0.); 2133 2138 } 2134 2139 /*}}}*/ -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r24351 r24359 146 146 bool IsOnSurface(); 147 147 bool IsIceInElement(); 148 bool IsIceOnlyInElement(); 148 149 bool IsLandInElement(); 149 150 void Ismip6FloatingiceMeltingRate(); -
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r24358 r24359 3012 3012 3013 3013 if(!IsIceInElement())return 0.; 3014 //if(! (this->inputs->Max(MaskIceLevelsetEnum)<0)) return 0;3014 //if(!IsIceOnlyInElement()) return 0; 3015 3015 3016 3016 int domaintype; … … 4114 4114 4115 4115 /*Add input*/ 4116 this-> inputs->AddInput(new TriaInput(CalvingMeltingrateEnum,&meltrates[0],P1Enum));4116 this->AddInput2(CalvingMeltingrateEnum,&meltrates[0],P1Enum); 4117 4117 4118 4118 /*Cleanup and return*/ … … 5592 5592 void Tria::SealevelriseMomentOfInertia(IssmDouble* dI_list,IssmDouble* Sg_old,IssmDouble eartharea){/*{{{*/ 5593 5593 /*early return if we are not on an ice cap OR ocean:*/ 5594 if(! (this->inputs->Max(MaskIceLevelsetEnum)<0) && !IsWaterInElement()){5594 if(!IsIceOnlyInElement() && !IsWaterInElement()){ 5595 5595 dI_list[0] = 0.0; // this is important!!! 5596 5596 dI_list[1] = 0.0; // this is important!!! … … 5663 5663 dI_list[2] = +4*PI*(rho_water*S*area)*pow(re,4)*(1-pow(sin(late),2))/eartharea; 5664 5664 } 5665 else if( this->inputs->Max(MaskIceLevelsetEnum)<0){5665 else if(IsIceOnlyInElement()){ 5666 5666 IssmDouble rho_ice, I; 5667 5667 … … 5713 5713 5714 5714 /*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); 5717 5717 *peustatic=0; //do not forget to assign this pointer, otherwise, global eustatic will be garbage! 5718 5718 return; … … 5720 5720 5721 5721 /*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); 5724 5725 *peustatic=0; //do not forget to assign this pointer, otherwise, global eustatic will be garbage! 5725 5726 return; … … 5727 5728 5728 5729 /*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){ 5730 5731 notfullygrounded=true; //used later on. 5731 5732 } 5732 5733 5733 5734 /*Inform mask: */ 5734 constant=1; this-> inputs->AddInput(new TriaInput(SealevelEustaticMaskEnum,&constant,P0Enum));5735 constant=1; this->AddInput2(SealevelEustaticMaskEnum,&constant,P0Enum); 5735 5736 5736 5737 /*recover material parameters: */ … … 5916 5917 /*early return if we are not on the ocean:*/ 5917 5918 if (!IsWaterInElement()){ 5918 constant=0; this-> inputs->AddInput(new TriaInput(SealevelEustaticOceanMaskEnum,&constant,P0Enum));5919 constant=0; this->AddInput2(SealevelEustaticOceanMaskEnum,&constant,P0Enum); 5919 5920 return; 5920 5921 } 5921 constant=1; this-> inputs->AddInput(new TriaInput(SealevelEustaticOceanMaskEnum,&constant,P0Enum));5922 constant=1; this->AddInput2(SealevelEustaticOceanMaskEnum,&constant,P0Enum); 5922 5923 5923 5924 /*recover computational flags: */ … … 6068 6069 6069 6070 /*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; 6071 6072 6072 6073 /*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; 6074 6076 6075 6077 /*recover computational flags: */ … … 6202 6204 6203 6205 /*Add all components to the pUp solution vectors:*/ 6204 if( this->inputs->Max(MaskIceLevelsetEnum)<0){6206 if(IsIceOnlyInElement()){ 6205 6207 U_values[i]+=3*rho_ice/rho_earth*area/eartharea*I*U_elastic[i]; 6206 6208 if(horiz){
Note:
See TracChangeset
for help on using the changeset viewer.