Changeset 24652


Ignore:
Timestamp:
03/11/20 11:55:27 (5 years ago)
Author:
Mathieu Morlighem
Message:

CHG: fixing PDD Sicopolis for P1DG

File:
1 edited

Legend:

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

    r24631 r24652  
    29862986        const int NUM_VERTICES_MONTHS_PER_YEAR  = NUM_VERTICES * 12;
    29872987
    2988         int             i;
     2988        int             i,vertexlids[MAXVERTICES];;
    29892989        IssmDouble* smb=xNew<IssmDouble>(NUM_VERTICES);         // surface mass balance
    29902990        IssmDouble* melt=xNew<IssmDouble>(NUM_VERTICES);                // melting comp. of surface mass balance
     
    30033003        IssmDouble inv_twelve=1./12.;                                                           //factor for monthly average
    30043004        IssmDouble time,yts,time_yr;
     3005
     3006        /*Get vertex Lids for later*/
     3007        this->GetVerticesLidList(&vertexlids[0]);
    30053008
    30063009        /*Get material parameters :*/
     
    30893092                                        /*FIXME: look at other function Element::PositiveDegreeDay and propagate change! Just assert for now*/
    30903093                                        PentaInput2* temp_input = xDynamicCast<PentaInput2*>(this->GetInput2(TemperatureEnum)); _assert_(temp_input);
    3091                                         _assert_(temp_input->GetInputInterpolationType()==P1Enum);
    3092 
    3093                                         GetInputListOnVertices(&s[0],TemperatureEnum);
    3094                                         yearlytemperatures[0] = s[0];
    3095                                         yearlytemperatures[1] = s[1];
    3096                                         yearlytemperatures[2] = s[2];
    3097                                         this->AddInput2(TemperatureEnum,&yearlytemperatures[0],P1Enum);
     3094                                        switch(temp_input->GetInputInterpolationType()){
     3095                                                case P1Enum:
     3096                                                        temp_input->element_values[3] = yearlytemperatures[3];
     3097                                                        temp_input->element_values[4] = yearlytemperatures[4];
     3098                                                        temp_input->element_values[5] = yearlytemperatures[5];
     3099                                                        temp_input->SetInput(P1Enum,NUM_VERTICES,&vertexlids[0],temp_input->element_values);
     3100                                                        break;
     3101                                                case P1DGEnum:
     3102                                                case P1xP2Enum:
     3103                                                case P1xP3Enum:
     3104                                                case P1xP4Enum:
     3105                                                        temp_input->element_values[3] = yearlytemperatures[3];
     3106                                                        temp_input->element_values[4] = yearlytemperatures[4];
     3107                                                        temp_input->element_values[5] = yearlytemperatures[5];
     3108                                                        temp_input->SetInput(temp_input->GetInputInterpolationType(),this->lid,this->GetNumberOfNodes(temp_input->GetInputInterpolationType()),temp_input->element_values);
     3109                                                        break;
     3110                                                default:
     3111                                                        _error_("Interpolation "<<EnumToStringx(temp_input->GetInputInterpolationType())<<" not supported yet");
     3112                                        }
     3113
    30983114                                        if(isenthalpy){
    30993115                                                /*Convert that to enthalpy for the enthalpy model*/
    3100                                                 IssmDouble enthalpy[6];
    3101                                                 GetInputListOnVertices(&enthalpy[0],EnthalpyEnum);
    3102                                                 ThermalToEnthalpy(&enthalpy[3],yearlytemperatures[3],0.,0.);
    3103                                                 ThermalToEnthalpy(&enthalpy[4],yearlytemperatures[4],0.,0.);
    3104                                                 ThermalToEnthalpy(&enthalpy[5],yearlytemperatures[5],0.,0.);
    3105                                                 this->AddInput2(EnthalpyEnum,&enthalpy[0],P1Enum);
     3116                                                PentaInput2* enth_input = xDynamicCast<PentaInput2*>(this->GetInput2(EnthalpyEnum)); _assert_(enth_input);
     3117                                                switch(enth_input->GetInputInterpolationType()){
     3118                                                        case P1Enum:
     3119                                                                ThermalToEnthalpy(&enth_input->element_values[3],yearlytemperatures[3],0.,0.);
     3120                                                                ThermalToEnthalpy(&enth_input->element_values[4],yearlytemperatures[4],0.,0.);
     3121                                                                ThermalToEnthalpy(&enth_input->element_values[5],yearlytemperatures[5],0.,0.);
     3122                                                                enth_input->SetInput(P1Enum,NUM_VERTICES,&vertexlids[0],enth_input->element_values);
     3123                                                                break;
     3124                                                        case P1DGEnum:
     3125                                                        case P1xP2Enum:
     3126                                                        case P1xP3Enum:
     3127                                                        case P1xP4Enum:
     3128                                                                ThermalToEnthalpy(&enth_input->element_values[3],yearlytemperatures[3],0.,0.);
     3129                                                                ThermalToEnthalpy(&enth_input->element_values[4],yearlytemperatures[4],0.,0.);
     3130                                                                ThermalToEnthalpy(&enth_input->element_values[5],yearlytemperatures[5],0.,0.);
     3131                                                                enth_input->SetInput(enth_input->GetInputInterpolationType(),this->lid,this->GetNumberOfNodes(enth_input->GetInputInterpolationType()),enth_input->element_values);
     3132                                                                break;
     3133                                                        default:
     3134                                                                _error_("Interpolation "<<EnumToStringx(temp_input->GetInputInterpolationType())<<" not supported yet");
     3135                                                }
    31063136                                        }
    31073137                                }
Note: See TracChangeset for help on using the changeset viewer.