Changeset 14562


Ignore:
Timestamp:
04/12/13 12:02:37 (12 years ago)
Author:
Mathieu Morlighem
Message:

NEW: LeBrocq's model is now hydrologyshreve, and added template for Basile's model

Location:
issm/trunk-jpl/src
Files:
15 added
18 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/EnumDefinitions/EnumDefinitions.h

    r14555 r14562  
    7979        FrictionQEnum,
    8080        GeometryHydrostaticRatioEnum,
     81        HydrologyEnum,
     82        HydrologyshreveEnum,
    8183        HydrologyshreveCREnum,
    8284        HydrologyshreveKnEnum,
     
    8688        HydrologyshreveSpcwatercolumnEnum,
    8789        HydrologyshreveStabilizationEnum,
     90        HydrologydcEnum,
     91        SedimentheadEnum,
     92        HydrologydcSedimentporosityEnum,
     93        HydrologydcSpcsedimentheadEnum,
    8894        IndependentObjectEnum,
    8995        InversionControlParametersEnum,
  • issm/trunk-jpl/src/c/Makefile.am

    r14540 r14562  
    446446                                              ./modules/ModelProcessorx/Hydrology/CreateConstraintsHydrology.cpp\
    447447                                              ./modules/ModelProcessorx/Hydrology/CreateLoadsHydrology.cpp \
     448                                                        ./modules/ModelProcessorx/Hydrology/CreateParametersHydrology.cpp \
    448449                                                  ./solutions/hydrology_core.cpp
    449450#}}}
  • issm/trunk-jpl/src/c/classes/objects/Materials/Matpar.cpp

    r14555 r14562  
    2424/*FUNCTION Matpar::Matpar(int matpar_mid,IoModel* iomodel){{{*/
    2525Matpar::Matpar(int matpar_mid, IoModel* iomodel){
     26
     27        int hydrology_model;
     28        iomodel->Constant(&hydrology_model,HydrologyEnum);
    2629
    2730        this->mid = matpar_mid;
     
    4043        iomodel->Constant(&this->g,ConstantsGEnum);
    4144
    42         iomodel->Constant(&this->hydro_CR,HydrologyshreveCREnum);
    43         iomodel->Constant(&this->kn,HydrologyshreveKnEnum);
    44         iomodel->Constant(&this->hydro_n,HydrologyshreveNEnum);
    45         iomodel->Constant(&this->hydro_p,HydrologyshrevePEnum);
    46         iomodel->Constant(&this->hydro_q,HydrologyshreveQEnum);
     45        if(hydrology_model==HydrologyshreveEnum){
     46                iomodel->Constant(&this->hydro_CR,HydrologyshreveCREnum);
     47                iomodel->Constant(&this->hydro_kn,HydrologyshreveKnEnum);
     48                iomodel->Constant(&this->hydro_n,HydrologyshreveNEnum);
     49                iomodel->Constant(&this->hydro_p,HydrologyshrevePEnum);
     50                iomodel->Constant(&this->hydro_q,HydrologyshreveQEnum);
     51        }
     52        else if(hydrology_model==HydrologydcEnum){
     53                iomodel->Constant(&this->sediment_porosity,HydrologydcSedimentporosityEnum);
     54        }
     55        else{
     56                _error_("Hydrology model "<<EnumToStringx(hydrology_model)<<" not supported yet");
     57        }
     58
     59
    4760        this->inputs=NULL; /*not used here*/
    4861}
     
    273286}
    274287/*}}}*/
    275 /*FUNCTION Matpar::GetKn {{{*/           
    276 IssmDouble Matpar::GetKn(){                     
    277         return kn;               
     288/*FUNCTION Matpar::GetHydrologyKn {{{*/
     289IssmDouble Matpar::GetHydrologyKn(){
     290        return hydro_kn;                 
    278291}               
    279292/*}}}*/                 
     
    298311}               
    299312/*}}}*/
     313/*FUNCTION Matpar::GetSedimentPorosity {{{*/
     314IssmDouble Matpar::GetSedimentPorosity(){
     315        return sediment_porosity;               
     316}               
     317/*}}}*/                 
    300318/*FUNCTION Matpar::TMeltingPoint {{{*/
    301319IssmDouble Matpar::TMeltingPoint(IssmDouble pressure){
  • issm/trunk-jpl/src/c/classes/objects/Materials/Matpar.h

    r13414 r14562  
    3030                IssmDouble  g;
    3131
    32                 /*hydrology: */          
    33                 IssmDouble  kn;                 
     32                /*hydrology Shreve: */   
     33                IssmDouble  hydro_kn;                   
    3434                IssmDouble  hydro_p;             
    3535                IssmDouble  hydro_q;             
    3636                IssmDouble  hydro_CR;                   
    3737                IssmDouble  hydro_n;
     38
     39                /*hydrology Dual Porous Continuum: */   
     40                IssmDouble  sediment_porosity;
    3841
    3942        public:
     
    9598                IssmDouble GetMeltingPoint();
    9699                IssmDouble GetReferenceTemperature();
    97                 IssmDouble GetKn();
     100                IssmDouble GetHydrologyKn();
    98101                IssmDouble GetHydrologyP();
    99102                IssmDouble GetHydrologyQ();
    100103                IssmDouble GetHydrologyCR();
    101104                IssmDouble GetHydrologyN();
     105                IssmDouble GetSedimentPorosity();
    102106                IssmDouble TMeltingPoint(IssmDouble pressure);
    103107                IssmDouble PureIceEnthalpy(IssmDouble pressure);
  • issm/trunk-jpl/src/c/modules/EnumToStringx/EnumToStringx.cpp

    r14555 r14562  
    8484                case FrictionQEnum : return "FrictionQ";
    8585                case GeometryHydrostaticRatioEnum : return "GeometryHydrostaticRatio";
    86                 case HydrologyshreveCREnum : return "HydrologyCR";
    87                 case HydrologyshreveKnEnum : return "HydrologyKn";
    88                 case HydrologyshreveNEnum : return "HydrologyN";
    89                 case HydrologyshrevePEnum : return "HydrologyP";
    90                 case HydrologyshreveQEnum : return "HydrologyQ";
    91                 case HydrologyshreveSpcwatercolumnEnum : return "HydrologySpcwatercolumn";
    92                 case HydrologyshreveStabilizationEnum : return "HydrologyStabilization";
     86                case HydrologyEnum : return "Hydrology";
     87                case HydrologyshreveEnum : return "Hydrologyshreve";
     88                case HydrologyshreveCREnum : return "HydrologyshreveCR";
     89                case HydrologyshreveKnEnum : return "HydrologyshreveKn";
     90                case HydrologyshreveNEnum : return "HydrologyshreveN";
     91                case HydrologyshrevePEnum : return "HydrologyshreveP";
     92                case HydrologyshreveQEnum : return "HydrologyshreveQ";
     93                case HydrologyshreveSpcwatercolumnEnum : return "HydrologyshreveSpcwatercolumn";
     94                case HydrologyshreveStabilizationEnum : return "HydrologyshreveStabilization";
     95                case HydrologydcEnum : return "Hydrologydc";
     96                case SedimentheadEnum : return "Sedimenthead";
     97                case HydrologydcSedimentporosityEnum : return "HydrologydcSedimentporosity";
     98                case HydrologydcSpcsedimentheadEnum : return "HydrologydcSpcsedimenthead";
    9399                case IndependentObjectEnum : return "IndependentObject";
    94100                case InversionControlParametersEnum : return "InversionControlParameters";
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r14555 r14562  
    2727
    2828        /*parameters for mass flux: {{{*/
    29         int      mass_flux_num_profiles=0;
    30         bool     qmu_mass_flux_present=false;
    31         bool     autodiff_mass_flux_present=false;
    32         bool     mass_flux_present=false;
    33         IssmDouble** array=NULL;
    34         int*     mdims_array=NULL;
    35         int*     ndims_array=NULL;
    36         IssmDouble*  temp_matrix=NULL;
    37         int      temp_m,temp_n;
    38         IssmDouble*  matrix=NULL;
    39         int      count;
     29        int          mass_flux_num_profiles     = 0;
     30        bool         qmu_mass_flux_present      = false;
     31        bool         autodiff_mass_flux_present = false;
     32        bool         mass_flux_present          = false;
     33        IssmDouble **array                      = NULL;
     34        int         *mdims_array                = NULL;
     35        int         *ndims_array                = NULL;
     36        IssmDouble  *temp_matrix                = NULL;
     37        int          temp_m,temp_n;
     38        IssmDouble  *matrix                     = NULL;
     39        int          count;
    4040        /*}}}*/
    4141
     
    7676        parameters->AddObject(iomodel->CopyConstantObject(ConstantsReferencetemperatureEnum));
    7777        parameters->AddObject(iomodel->CopyConstantObject(BalancethicknessStabilizationEnum));
    78         parameters->AddObject(iomodel->CopyConstantObject(HydrologyshreveStabilizationEnum));
    7978        parameters->AddObject(iomodel->CopyConstantObject(GroundinglineMeltingRateEnum));
    8079        parameters->AddObject(iomodel->CopyConstantObject(ThermalMaxiterEnum));
     
    218217        /*}}}*/
    219218
     219        /*Solution specific parameters (FIXME: extend to other params)*/
     220        #ifdef _HAVE_HYDROLOGY_
     221        CreateParametersHydrology(&parameters,iomodel,solution_type,analysis_type);
     222        #endif
     223
    220224        /*Before returning, create parameters in case we are running Qmu or control types runs: */
    221225        #ifdef _HAVE_CONTROL_
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Hydrology/CreateConstraintsHydrology.cpp

    r14555 r14562  
    1515
    1616        /*Recover pointer: */
     17        int          hydrology_model;
    1718        Constraints* constraints=*pconstraints;
     19
     20        /*retrieve some parameters: */
     21        iomodel->Constant(&hydrology_model,HydrologyEnum);
    1822
    1923        /*Create constraints if they do not exist yet*/
    2024        if(!constraints) constraints = new Constraints();
    21         IoModelToConstraintsx(constraints,iomodel,HydrologyshreveSpcwatercolumnEnum,HydrologyAnalysisEnum);
     25
     26        if(hydrology_model==HydrologyshreveEnum){
     27                IoModelToConstraintsx(constraints,iomodel,HydrologyshreveSpcwatercolumnEnum,HydrologyAnalysisEnum);
     28        }
     29        else if(hydrology_model==HydrologydcEnum){
     30                IoModelToConstraintsx(constraints,iomodel,HydrologydcSpcsedimentheadEnum,HydrologyAnalysisEnum);
     31        }
     32        else{
     33                _error_("Hydrology model "<<EnumToStringx(hydrology_model)<<" not supported yet");
     34        }
    2235
    2336        /*Assign output pointer: */
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/Hydrology/UpdateElementsHydrology.cpp

    r13622 r14562  
    1616void    UpdateElementsHydrology(Elements* elements, IoModel* iomodel,int analysis_counter,int analysis_type){
    1717
     18        int    hydrology_model;
    1819        int    numberofelements;
    1920
    2021        /*Fetch data needed: */
     22        iomodel->Constant(&hydrology_model,HydrologyEnum);
    2123        iomodel->Constant(&numberofelements,MeshNumberofelementsEnum);
    2224        iomodel->FetchData(1,MeshElementsEnum);
     
    3537        iomodel->FetchDataToInput(elements,SurfaceEnum);
    3638        iomodel->FetchDataToInput(elements,BedEnum);
    37         iomodel->FetchDataToInput(elements,FrictionCoefficientEnum);
    38         iomodel->FetchDataToInput(elements,FrictionPEnum);
    39         iomodel->FetchDataToInput(elements,FrictionQEnum);
    4039        iomodel->FetchDataToInput(elements,MaskElementonfloatingiceEnum);
    4140        iomodel->FetchDataToInput(elements,MeshElementonbedEnum);
    4241        iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum);
    4342        iomodel->FetchDataToInput(elements,MaskElementonwaterEnum);
    44         iomodel->FetchDataToInput(elements,FlowequationElementEquationEnum);
    45         iomodel->FetchDataToInput(elements,MaterialsRheologyBEnum);
    46         iomodel->FetchDataToInput(elements,MaterialsRheologyNEnum);
    47         iomodel->FetchDataToInput(elements,PressureEnum);
    48         iomodel->FetchDataToInput(elements,TemperatureEnum);
    4943        iomodel->FetchDataToInput(elements,BasalforcingsMeltingRateEnum);
    50         iomodel->FetchDataToInput(elements,WatercolumnEnum);
    51         iomodel->FetchDataToInput(elements,BasalforcingsGeothermalfluxEnum);
    52         iomodel->FetchDataToInput(elements,VxEnum);
    53         iomodel->FetchDataToInput(elements,VyEnum);
    54         iomodel->FetchDataToInput(elements,VzEnum);
    55 
    56         elements->InputDuplicate(WatercolumnEnum,WaterColumnOldEnum);
     44        if(hydrology_model==HydrologyshreveEnum){
     45                iomodel->FetchDataToInput(elements,WatercolumnEnum);
     46                elements->InputDuplicate(WatercolumnEnum,WaterColumnOldEnum);
     47        }
     48        else if(hydrology_model==HydrologydcEnum){
     49                iomodel->FetchDataToInput(elements,SedimentheadEnum);
     50        }
     51        else{
     52                _error_("Hydrology model "<<EnumToStringx(hydrology_model)<<" not supported yet");
     53        }
    5754
    5855        /*Free data: */
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.cpp

    r13622 r14562  
    4949                analysis_type=analysis_type_list[i];
    5050
    51                 /*Hack for trasient runs (to be improved)*/
     51                /*Hack for trasient runs (FIXME: to be improved)*/
    5252                if(solution_type==TransientSolutionEnum && analysis_type==ThermalAnalysisEnum && dim==2) continue;
    5353                if(solution_type==TransientSolutionEnum && analysis_type==MeltingAnalysisEnum && dim==2) continue;
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/ModelProcessorx.h

    r13623 r14562  
    2121void  CreateElementsVerticesAndMaterials(Elements** pelements,Vertices** pvertices,Materials** pmaterials, IoModel* iomodel,const int nummodels);
    2222void  CreateParameters(Parameters** pparameters,IoModel* iomodel,char* rootpath,const int solution_type,int analysis_type,int analysis_counter);
     23void  CreateParametersAutodiff(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type);
    2324void  CreateParametersControl(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type);
    2425void  CreateParametersDakota(Parameters** pparameters,IoModel* iomodel,char* rootpath,int solution_type,int analysis_type);
    25 void  CreateParametersAutodiff(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type);
     26void  CreateParametersHydrology(Parameters** pparameters,IoModel* iomodel,int solution_type,int analysis_type);
    2627void  UpdateElementsAndMaterialsControl(Elements* elements,Materials* materials, IoModel* iomodel);
    2728
  • issm/trunk-jpl/src/c/modules/StringToEnumx/StringToEnumx.cpp

    r14555 r14562  
    8585              else if (strcmp(name,"FrictionQ")==0) return FrictionQEnum;
    8686              else if (strcmp(name,"GeometryHydrostaticRatio")==0) return GeometryHydrostaticRatioEnum;
     87              else if (strcmp(name,"Hydrology")==0) return HydrologyEnum;
     88              else if (strcmp(name,"Hydrologyshreve")==0) return HydrologyshreveEnum;
    8789              else if (strcmp(name,"HydrologyshreveCR")==0) return HydrologyshreveCREnum;
    8890              else if (strcmp(name,"HydrologyshreveKn")==0) return HydrologyshreveKnEnum;
     
    9294              else if (strcmp(name,"HydrologyshreveSpcwatercolumn")==0) return HydrologyshreveSpcwatercolumnEnum;
    9395              else if (strcmp(name,"HydrologyshreveStabilization")==0) return HydrologyshreveStabilizationEnum;
     96              else if (strcmp(name,"Hydrologydc")==0) return HydrologydcEnum;
     97              else if (strcmp(name,"Sedimenthead")==0) return SedimentheadEnum;
     98              else if (strcmp(name,"HydrologydcSedimentporosity")==0) return HydrologydcSedimentporosityEnum;
     99              else if (strcmp(name,"HydrologydcSpcsedimenthead")==0) return HydrologydcSpcsedimentheadEnum;
    94100              else if (strcmp(name,"IndependentObject")==0) return IndependentObjectEnum;
    95101              else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;
     
    132138              else if (strcmp(name,"MaterialsRheologyZ")==0) return MaterialsRheologyZEnum;
    133139              else if (strcmp(name,"MaterialsRheologyZbar")==0) return MaterialsRheologyZbarEnum;
    134               else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum;
     140         else stage=2;
     141   }
     142   if(stage==2){
     143              if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum;
    135144              else if (strcmp(name,"MaterialsRhoWater")==0) return MaterialsRhoWaterEnum;
    136145              else if (strcmp(name,"MaterialsRhoFreshwater")==0) return MaterialsRhoFreshwaterEnum;
     
    138147              else if (strcmp(name,"MaterialsThermalExchangeVelocity")==0) return MaterialsThermalExchangeVelocityEnum;
    139148              else if (strcmp(name,"MaterialsThermalconductivity")==0) return MaterialsThermalconductivityEnum;
    140          else stage=2;
    141    }
    142    if(stage==2){
    143               if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum;
     149              else if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum;
    144150              else if (strcmp(name,"MeshDimension")==0) return MeshDimensionEnum;
    145151              else if (strcmp(name,"MeshEdges")==0) return MeshEdgesEnum;
     
    255261              else if (strcmp(name,"FlaimAnalysis")==0) return FlaimAnalysisEnum;
    256262              else if (strcmp(name,"FlaimSolution")==0) return FlaimSolutionEnum;
    257               else if (strcmp(name,"HydrologyAnalysis")==0) return HydrologyAnalysisEnum;
     263         else stage=3;
     264   }
     265   if(stage==3){
     266              if (strcmp(name,"HydrologyAnalysis")==0) return HydrologyAnalysisEnum;
    258267              else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;
    259268              else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
     
    261270              else if (strcmp(name,"PrognosticAnalysis")==0) return PrognosticAnalysisEnum;
    262271              else if (strcmp(name,"PrognosticSolution")==0) return PrognosticSolutionEnum;
    263          else stage=3;
    264    }
    265    if(stage==3){
    266               if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
     272              else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
    267273              else if (strcmp(name,"SurfaceSlopeAnalysis")==0) return SurfaceSlopeAnalysisEnum;
    268274              else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
     
    378384              else if (strcmp(name,"QmuPressure")==0) return QmuPressureEnum;
    379385              else if (strcmp(name,"QmuVx")==0) return QmuVxEnum;
    380               else if (strcmp(name,"QmuVy")==0) return QmuVyEnum;
     386         else stage=4;
     387   }
     388   if(stage==4){
     389              if (strcmp(name,"QmuVy")==0) return QmuVyEnum;
    381390              else if (strcmp(name,"QmuVz")==0) return QmuVzEnum;
    382391              else if (strcmp(name,"QmuThickness")==0) return QmuThicknessEnum;
     
    384393              else if (strcmp(name,"QmuSurface")==0) return QmuSurfaceEnum;
    385394              else if (strcmp(name,"QmuMelting")==0) return QmuMeltingEnum;
    386          else stage=4;
    387    }
    388    if(stage==4){
    389               if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum;
     395              else if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum;
    390396              else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum;
    391397              else if (strcmp(name,"SegmentOnIceShelf")==0) return SegmentOnIceShelfEnum;
     
    501507              else if (strcmp(name,"GroundinglineMigration")==0) return GroundinglineMigrationEnum;
    502508              else if (strcmp(name,"Gset")==0) return GsetEnum;
    503               else if (strcmp(name,"Index")==0) return IndexEnum;
     509         else stage=5;
     510   }
     511   if(stage==5){
     512              if (strcmp(name,"Index")==0) return IndexEnum;
    504513              else if (strcmp(name,"Indexed")==0) return IndexedEnum;
    505514              else if (strcmp(name,"Intersect")==0) return IntersectEnum;
     
    507516              else if (strcmp(name,"OldGradient")==0) return OldGradientEnum;
    508517              else if (strcmp(name,"OutputFilePointer")==0) return OutputFilePointerEnum;
    509          else stage=5;
    510    }
    511    if(stage==5){
    512               if (strcmp(name,"OutputFileName")==0) return OutputFileNameEnum;
     518              else if (strcmp(name,"OutputFileName")==0) return OutputFileNameEnum;
    513519              else if (strcmp(name,"LockFileName")==0) return LockFileNameEnum;
    514520              else if (strcmp(name,"PetscOptionsAnalyses")==0) return PetscOptionsAnalysesEnum;
  • issm/trunk-jpl/src/c/solutions/hydrology_core.cpp

    r14553 r14562  
    1919        /*intermediary*/
    2020        int        step,nsteps;
    21         int        output_frequency;
     21        int        output_frequency,hydrology_model;
    2222        bool       save_results;
    2323        bool       modify_loads=true;
     
    3131        femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
    3232        femmodel->parameters->FindParam(&output_frequency,SettingsOutputFrequencyEnum);
     33        femmodel->parameters->FindParam(&hydrology_model,HydrologyEnum);
    3334
    3435        /*first compute slopes: */
    35         surfaceslope_core(femmodel);
    36         bedslope_core(femmodel);
     36        if (hydrology_model==HydrologyshreveEnum){
     37                surfaceslope_core(femmodel);
     38                bedslope_core(femmodel);
     39        }
    3740
    3841        /*Compute number of time steps: */
     
    5659                femmodel->parameters->SetParam(step,StepEnum);
    5760
    58                 /*Compute hydrology solution: */
    59                 if(VerboseSolution()) _pprintLine_("   computing water column");
    60                 femmodel->SetCurrentConfiguration(HydrologyAnalysisEnum);
    61                 solver_nonlinear(femmodel,modify_loads);
     61                if (hydrology_model==HydrologyshreveEnum){
     62                        /*Compute hydrology solution: */
     63                        if(VerboseSolution()) _pprintLine_("   computing water column");
     64                        femmodel->SetCurrentConfiguration(HydrologyAnalysisEnum);
     65                        solver_nonlinear(femmodel,modify_loads);
    6266
    63                 /*transfer water column thickness to old water column thickness: */
    64                 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,WatercolumnEnum,WaterColumnOldEnum);
     67                        /*transfer water column thickness to old water column thickness: */
     68                        InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,WatercolumnEnum,WaterColumnOldEnum);
    6569
    66                 if(save_results && ((i+1)%output_frequency==0 || (i+1)==nsteps)){
    67                         if(VerboseSolution()) _pprintLine_("   saving results ");
    68                         InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,WatercolumnEnum);
    69                         InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,HydrologyWaterVxEnum);
    70                         InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,HydrologyWaterVyEnum);
     70                        if(save_results && ((i+1)%output_frequency==0 || (i+1)==nsteps)){
     71                                if(VerboseSolution()) _pprintLine_("   saving results ");
     72                                InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,WatercolumnEnum);
     73                                InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,HydrologyWaterVxEnum);
     74                                InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,HydrologyWaterVyEnum);
    7175
    72                         /*unload results*/
    73                         if(VerboseSolution()) _pprintLine_("   saving temporary results");
    74                         OutputResultsx(femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,femmodel->results);
     76                                /*unload results*/
     77                                if(VerboseSolution()) _pprintLine_("   saving temporary results");
     78                                OutputResultsx(femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,femmodel->results);
     79                        }
    7580                }
     81                else if (hydrology_model==HydrologydcEnum){
     82                        //solver_linear(femmodel,modify_loads);
     83                        _error_("not implemented yet");
     84                        if(save_results && ((i+1)%output_frequency==0 || (i+1)==nsteps)){
     85                                if(VerboseSolution()) _pprintLine_("   saving results ");
     86                                InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SedimentheadEnum);
     87
     88                                /*unload results*/
     89                                if(VerboseSolution()) _pprintLine_("   saving temporary results");
     90                                OutputResultsx(femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,femmodel->results);
     91                        }
     92                }
     93
     94
    7695        }
    7796}
  • issm/trunk-jpl/src/m/classes/hydrologyshreve.m

    r14555 r14562  
    5656                end % }}}
    5757                function marshall(obj,fid) % {{{
     58                        WriteData(fid,'enum',HydrologyEnum(),'data',HydrologyshreveEnum(),'format','Integer');
    5859                        WriteData(fid,'object',obj,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1);
    5960                        WriteData(fid,'object',obj,'fieldname','n','format','Double');
  • issm/trunk-jpl/src/m/classes/hydrologyshreve.py

    r14555 r14562  
    7171
    7272        def marshall(self,fid):    # {{{
     73                WriteData(fid,'enum',HydrologyEnum(),'data',HydrologyshreveEnum(),'format','Integer');
    7374                WriteData(fid,'object',self,'fieldname','spcwatercolumn','format','DoubleMat','mattype',1)
    7475                WriteData(fid,'object',self,'fieldname','n','format','Double')
  • issm/trunk-jpl/src/m/classes/initialization.m

    r13131 r14562  
    1515                basaltemp     = NaN;
    1616                watercolumn   = NaN;
     17                sedimenthead  = NaN;
    1718                waterfraction = NaN;
    1819        end
     
    4142                        end
    4243                        if ismember(HydrologyAnalysisEnum(),analyses),
    43                                 md = checkfield(md,'initialization.watercolumn','NaN',1,'size',[md.mesh.numberofvertices 1]);
     44                                if isa(md.hydrology,'hydrologydc'),
     45                                        md = checkfield(md,'initialization.sedimenthead','NaN',1,'size',[md.mesh.numberofvertices 1]);
     46                                else
     47                                        md = checkfield(md,'initialization.watercolumn','NaN',1,'size',[md.mesh.numberofvertices 1]);
     48                                end
    4449                        end
    4550                        if ismember(BalancethicknessAnalysisEnum(),analyses),
     
    7378                        fielddisplay(obj,'basaltemp','basal temperature in Kelvins');
    7479                        fielddisplay(obj,'watercolumn','thickness of subglacial water');
     80                        fielddisplay(obj,'sedimenthead','sediment water head of subglacial system (meters)');
    7581                        fielddisplay(obj,'waterfraction','fraction of water in the ice');
    7682
     
    8389                        WriteData(fid,'data',obj.temperature,'format','DoubleMat','mattype',1,'enum',TemperatureEnum);
    8490                        WriteData(fid,'data',obj.watercolumn,'format','DoubleMat','mattype',1,'enum',WatercolumnEnum);
     91                        WriteData(fid,'data',obj.sedimenthead,'format','DoubleMat','mattype',1,'enum',SedimentheadEnum);
    8592                        WriteData(fid,'data',obj.waterfraction,'format','DoubleMat','mattype',1,'enum',WaterfractionEnum);
    8693                end % }}}
  • issm/trunk-jpl/src/m/classes/initialization.py

    r14140 r14562  
    2727                self.basaltemp     = float('NaN')
    2828                self.watercolumn   = float('NaN')
     29                self.sedimenthead  = float('NaN')
    2930                self.waterfraction = float('NaN')
    3031
     
    4647                string="%s\n%s"%(string,fielddisplay(self,'basaltemp','basal temperature in Kelvins'))
    4748                string="%s\n%s"%(string,fielddisplay(self,'watercolumn','thickness of subglacial water'))
     49                string="%s\n%s"%(string,fielddisplay(self,'sedimenthead','sediment water head of subglacial system (meters)'))
    4850                string="%s\n%s"%(string,fielddisplay(self,'waterfraction','fraction of water in the ice'))
    4951
     
    9193                WriteData(fid,'data',self.temperature,'format','DoubleMat','mattype',1,'enum',TemperatureEnum())
    9294                WriteData(fid,'data',self.watercolumn,'format','DoubleMat','mattype',1,'enum',WatercolumnEnum())
     95                WriteData(fid,'data',self.sedimenthead,'format','DoubleMat','mattype',1,'enum',SedimentheadEnum())
    9396                WriteData(fid,'data',self.waterfraction,'format','DoubleMat','mattype',1,'enum',WaterfractionEnum())
    9497        # }}}
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r14538 r14562  
    679679        return StringToEnum('GeometryHydrostaticRatio')[0]
    680680
    681 def HydrologyCREnum():
    682         """
    683         HYDROLOGYCRENUM - Enum of HydrologyCR
    684 
    685            Usage:
    686               macro=HydrologyCREnum()
    687         """
    688 
    689         return StringToEnum('HydrologyCR')[0]
    690 
    691 def HydrologyKnEnum():
    692         """
    693         HYDROLOGYKNENUM - Enum of HydrologyKn
    694 
    695            Usage:
    696               macro=HydrologyKnEnum()
    697         """
    698 
    699         return StringToEnum('HydrologyKn')[0]
    700 
    701 def HydrologyNEnum():
    702         """
    703         HYDROLOGYNENUM - Enum of HydrologyN
    704 
    705            Usage:
    706               macro=HydrologyNEnum()
    707         """
    708 
    709         return StringToEnum('HydrologyN')[0]
    710 
    711 def HydrologyPEnum():
    712         """
    713         HYDROLOGYPENUM - Enum of HydrologyP
    714 
    715            Usage:
    716               macro=HydrologyPEnum()
    717         """
    718 
    719         return StringToEnum('HydrologyP')[0]
    720 
    721 def HydrologyQEnum():
    722         """
    723         HYDROLOGYQENUM - Enum of HydrologyQ
    724 
    725            Usage:
    726               macro=HydrologyQEnum()
    727         """
    728 
    729         return StringToEnum('HydrologyQ')[0]
    730 
    731 def HydrologySpcwatercolumnEnum():
    732         """
    733         HYDROLOGYSPCWATERCOLUMNENUM - Enum of HydrologySpcwatercolumn
    734 
    735            Usage:
    736               macro=HydrologySpcwatercolumnEnum()
    737         """
    738 
    739         return StringToEnum('HydrologySpcwatercolumn')[0]
    740 
    741 def HydrologyStabilizationEnum():
    742         """
    743         HYDROLOGYSTABILIZATIONENUM - Enum of HydrologyStabilization
    744 
    745            Usage:
    746               macro=HydrologyStabilizationEnum()
    747         """
    748 
    749         return StringToEnum('HydrologyStabilization')[0]
     681def HydrologyEnum():
     682        """
     683        HYDROLOGYENUM - Enum of Hydrology
     684
     685           Usage:
     686              macro=HydrologyEnum()
     687        """
     688
     689        return StringToEnum('Hydrology')[0]
     690
     691def HydrologyshreveEnum():
     692        """
     693        HYDROLOGYSHREVEENUM - Enum of Hydrologyshreve
     694
     695           Usage:
     696              macro=HydrologyshreveEnum()
     697        """
     698
     699        return StringToEnum('Hydrologyshreve')[0]
     700
     701def HydrologyshreveCREnum():
     702        """
     703        HYDROLOGYSHREVECRENUM - Enum of HydrologyshreveCR
     704
     705           Usage:
     706              macro=HydrologyshreveCREnum()
     707        """
     708
     709        return StringToEnum('HydrologyshreveCR')[0]
     710
     711def HydrologyshreveKnEnum():
     712        """
     713        HYDROLOGYSHREVEKNENUM - Enum of HydrologyshreveKn
     714
     715           Usage:
     716              macro=HydrologyshreveKnEnum()
     717        """
     718
     719        return StringToEnum('HydrologyshreveKn')[0]
     720
     721def HydrologyshreveNEnum():
     722        """
     723        HYDROLOGYSHREVENENUM - Enum of HydrologyshreveN
     724
     725           Usage:
     726              macro=HydrologyshreveNEnum()
     727        """
     728
     729        return StringToEnum('HydrologyshreveN')[0]
     730
     731def HydrologyshrevePEnum():
     732        """
     733        HYDROLOGYSHREVEPENUM - Enum of HydrologyshreveP
     734
     735           Usage:
     736              macro=HydrologyshrevePEnum()
     737        """
     738
     739        return StringToEnum('HydrologyshreveP')[0]
     740
     741def HydrologyshreveQEnum():
     742        """
     743        HYDROLOGYSHREVEQENUM - Enum of HydrologyshreveQ
     744
     745           Usage:
     746              macro=HydrologyshreveQEnum()
     747        """
     748
     749        return StringToEnum('HydrologyshreveQ')[0]
     750
     751def HydrologyshreveSpcwatercolumnEnum():
     752        """
     753        HYDROLOGYSHREVESPCWATERCOLUMNENUM - Enum of HydrologyshreveSpcwatercolumn
     754
     755           Usage:
     756              macro=HydrologyshreveSpcwatercolumnEnum()
     757        """
     758
     759        return StringToEnum('HydrologyshreveSpcwatercolumn')[0]
     760
     761def HydrologyshreveStabilizationEnum():
     762        """
     763        HYDROLOGYSHREVESTABILIZATIONENUM - Enum of HydrologyshreveStabilization
     764
     765           Usage:
     766              macro=HydrologyshreveStabilizationEnum()
     767        """
     768
     769        return StringToEnum('HydrologyshreveStabilization')[0]
     770
     771def HydrologydcEnum():
     772        """
     773        HYDROLOGYDCENUM - Enum of Hydrologydc
     774
     775           Usage:
     776              macro=HydrologydcEnum()
     777        """
     778
     779        return StringToEnum('Hydrologydc')[0]
     780
     781def SedimentheadEnum():
     782        """
     783        SEDIMENTHEADENUM - Enum of Sedimenthead
     784
     785           Usage:
     786              macro=SedimentheadEnum()
     787        """
     788
     789        return StringToEnum('Sedimenthead')[0]
     790
     791def HydrologydcSedimentporosityEnum():
     792        """
     793        HYDROLOGYDCSEDIMENTPOROSITYENUM - Enum of HydrologydcSedimentporosity
     794
     795           Usage:
     796              macro=HydrologydcSedimentporosityEnum()
     797        """
     798
     799        return StringToEnum('HydrologydcSedimentporosity')[0]
     800
     801def HydrologydcSpcsedimentheadEnum():
     802        """
     803        HYDROLOGYDCSPCSEDIMENTHEADENUM - Enum of HydrologydcSpcsedimenthead
     804
     805           Usage:
     806              macro=HydrologydcSpcsedimentheadEnum()
     807        """
     808
     809        return StringToEnum('HydrologydcSpcsedimenthead')[0]
    750810
    751811def IndependentObjectEnum():
     
    50775137        """
    50785138
    5079         return 506
    5080 
     5139        return 512
     5140
  • issm/trunk-jpl/src/m/enum/MaximumNumberOfEnums.m

    r14538 r14562  
    99%      macro=MaximumNumberOfEnums()
    1010
    11 macro=506;
     11macro=512;
Note: See TracChangeset for help on using the changeset viewer.