Changeset 23093


Ignore:
Timestamp:
08/16/18 13:32:45 (7 years ago)
Author:
Mathieu Morlighem
Message:

CHG: fixing PISM hydro model

Location:
issm/trunk-jpl
Files:
1 added
9 edited

Legend:

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

    r23020 r23093  
    3232
    3333        /*Add input to elements*/
     34        iomodel->FetchDataToInput(elements,"md.mask.ice_levelset",MaskIceLevelsetEnum);
     35        iomodel->FetchDataToInput(elements,"md.mask.groundedice_levelset",MaskGroundediceLevelsetEnum);
     36        iomodel->FetchDataToInput(elements,"md.basalforcings.groundedice_melting_rate",BasalforcingsGroundediceMeltingRateEnum);
    3437        iomodel->FetchDataToInput(elements,"md.hydrology.drainage_rate",HydrologyDrainageRateEnum);
    35         iomodel->FetchDataToInput(elements,"md.hydrology.watercolumn",WatercolumnEnum,0.);
     38        iomodel->FetchDataToInput(elements,"md.initialization.watercolumn",WatercolumnEnum,0.);
    3639}/*}}}*/
    3740void HydrologyPismAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
     
    4649        if(hydrology_model!=HydrologypismEnum) return;
    4750        parameters->AddObject(new IntParam(HydrologyModelEnum,hydrology_model));
     51
     52        /*Requested outputs*/
     53        iomodel->FindConstant(&requestedoutputs,&numoutputs,"md.hydrology.requested_outputs");
     54        parameters->AddObject(new IntParam(HydrologyNumRequestedOutputsEnum,numoutputs));
     55        if(numoutputs)parameters->AddObject(new StringArrayParam(HydrologyRequestedOutputsEnum,requestedoutputs,numoutputs));
     56        iomodel->DeleteData(&requestedoutputs,numoutputs,"md.hydrology.requested_outputs");
    4857
    4958        /*Nothing else to add for now*/
     
    98107        /*Retrieve all inputs and parameters*/
    99108        element->FindParam(&dt,TimesteppingTimeStepEnum);
     109        IssmDouble  rho_ice   = element->GetMaterialParameter(MaterialsRhoIceEnum);
     110        IssmDouble  rho_water = element->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
    100111
    101112        /*Get water column and drainage rate*/
     
    109120
    110121        /*Add water*/
    111         for(int i=0;i<numvertices;i++) watercolumn[i] += (meltingrate[i]-drainagerate[i])*dt;
     122        for(int i=0;i<numvertices;i++) watercolumn[i] += (meltingrate[i]/rho_ice*rho_water-drainagerate[i])*dt;
    112123
    113124        /* Divide by connectivity, add degree of channelization as an input */
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r23087 r23093  
    771771                                analyses_temp[numanalyses++]=HydrologyShreveAnalysisEnum;
    772772                                analyses_temp[numanalyses++]=HydrologyShaktiAnalysisEnum;
     773                                analyses_temp[numanalyses++]=HydrologyPismAnalysisEnum;
    773774                                analyses_temp[numanalyses++]=HydrologyDCInefficientAnalysisEnum;
    774775                                analyses_temp[numanalyses++]=HydrologyDCEfficientAnalysisEnum;
  • issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp

    r23066 r23093  
    150150                        }
    151151                        else if(hydrology_model==HydrologyshaktiEnum){
     152                                /*Nothing to add*/
     153                        }
     154                        else if(hydrology_model==HydrologypismEnum){
    152155                                /*Nothing to add*/
    153156                        }
  • issm/trunk-jpl/src/c/cores/hydrology_core.cpp

    r23020 r23093  
    1313
    1414        /*intermediary*/
    15         int                                                     hydrology_model;
    16         int                                                     solution_type;
    17         int                                                     numoutputs                              =       0;
    18         bool                                            save_results;
    19         bool                                            modify_loads                    =       true;
    20         char                                    **requested_outputs = NULL;
    21         IssmDouble                      ThawedNodes;
     15        int          hydrology_model;
     16        int          solution_type;
     17        int          numoutputs        = 0;
     18        bool         save_results;
     19        bool         modify_loads      = true;
     20        char       **requested_outputs = NULL;
     21        IssmDouble   ThawedNodes;
    2222
    2323        /*first recover parameters common to all solutions*/
     
    4646        else if (hydrology_model==HydrologydcEnum){
    4747                /*intermediary: */
    48                 bool                            isefficientlayer;
    49                 bool                            isthermal;
    50                 int                                     step,hydroslices;
    51                 IssmDouble      time,init_time,hydrotime,yts;
    52                 IssmDouble      dt,hydrodt;
     48                bool       isefficientlayer;
     49                bool       isthermal;
     50                int        step,hydroslices;
     51                IssmDouble time,init_time,hydrotime,yts;
     52                IssmDouble dt,hydrodt;
    5353
    5454                femmodel->parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
  • issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp

    r23020 r23093  
    204204                case 2: return HydrologyshreveEnum;
    205205                case 3: return HydrologyshaktiEnum;
     206                case 4: return HydrologypismEnum;
    206207                default: _error_("Marshalled hydrology code \""<<enum_in<<"\" not supported yet");
    207208        }
  • issm/trunk-jpl/src/c/toolkits/petsc/objects/PetscSolver.cpp

    r22594 r23093  
    115115        KSPGetPC(ksp,&pc);
    116116        if (solver_type==MUMPSPACKAGE_LU){
    117                 #if defined(_HAVE_PETSCDEV_)
     117                #if (_PETSC_MAJOR_==3) && (_PETSC_MINOR_>=9)
    118118                PCFactorSetMatSolverType(pc,MATSOLVERMUMPS);
    119119                #else
  • issm/trunk-jpl/src/m/classes/hydrologypism.m

    r23020 r23093  
    4747                        WriteData(fid,prefix,'name','md.hydrology.model','data',4,'format','Integer');
    4848                        WriteData(fid,prefix,'object',self,'class','hydrology','fieldname','drainage_rate','format','DoubleMat','mattype',1,'scale',1./(1000.*yts)); %from mm/yr to m/s
     49                        WriteData(fid,prefix,'data',{'Watercolumn'},'name','md.hydrology.requested_outputs','format','StringArray');
    4950                end % }}}
    5051        end
  • issm/trunk-jpl/src/m/classes/hydrologyshreve.m

    r22998 r23093  
    88                spcwatercolumn     = NaN;
    99                stabilization      = 0;
    10     requested_outputs  = {};
     10                requested_outputs  = {};
    1111        end
    1212        methods
Note: See TracChangeset for help on using the changeset viewer.