Changeset 19720


Ignore:
Timestamp:
11/16/15 13:42:15 (9 years ago)
Author:
Mathieu Morlighem
Message:

NEW: working on new subglacial hydrology model with Aleah, not working just yet

Location:
issm/trunk-jpl
Files:
12 added
12 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/m4/analyses.m4

    r19528 r19720  
    478478
    479479dnl }}}
     480dnl with-HydrologySommers{{{
     481
     482AC_ARG_WITH([HydrologySommers],
     483
     484        AS_HELP_STRING([--with-HydrologySommers = YES], [compile with HydrologySommers capabilities (default is yes)]),
     485
     486        [HYDROLOGYSOMMERS=$withval],[HYDROLOGYSOMMERS=yes])
     487
     488AC_MSG_CHECKING(for HydrologySommers capability compilation)
     489
     490
     491HAVE_HYDROLOGYSOMMERS=no
     492
     493if test "x$HYDROLOGYSOMMERS" = "xyes"; then
     494
     495        HAVE_HYDROLOGYSOMMERS=yes
     496
     497        AC_DEFINE([_HAVE_HYDROLOGYSOMMERS_],[1],[with HydrologySommers capability])
     498
     499fi
     500
     501AM_CONDITIONAL([HYDROLOGYSOMMERS], [test x$HAVE_HYDROLOGYSOMMERS = xyes])
     502
     503AC_MSG_RESULT($HAVE_HYDROLOGYSOMMERS)
     504
     505dnl }}}
    480506dnl with-Melting{{{
    481507
  • issm/trunk-jpl/src/c/Makefile.am

    r19702 r19720  
    391391issm_sources += ./analyses/HydrologyShreveAnalysis.cpp
    392392endif
     393if HYDROLOGYSOMMERS
     394issm_sources += ./analyses/HydrologySommersAnalysis.cpp
     395endif
    393396if HYDROLOGYDCINEFFICIENT
    394397issm_sources += ./analyses/HydrologyDCInefficientAnalysis.cpp
  • issm/trunk-jpl/src/c/analyses/EnumToAnalysis.cpp

    r19528 r19720  
    6868                case HydrologyDCEfficientAnalysisEnum : return new HydrologyDCEfficientAnalysis();
    6969                #endif
     70                #ifdef _HAVE_HYDROLOGYSOMMERS_
     71                case HydrologySommersAnalysisEnum : return new HydrologySommersAnalysis();
     72                #endif
    7073                #ifdef _HAVE_MELTING_
    7174                case MeltingAnalysisEnum : return new MeltingAnalysis();
  • issm/trunk-jpl/src/c/analyses/analyses.h

    r19528 r19720  
    2727#include "./HydrologyDCInefficientAnalysis.h"
    2828#include "./HydrologyShreveAnalysis.h"
     29#include "./HydrologySommersAnalysis.h"
    2930#include "./LevelsetAnalysis.h"
    3031#include "./LsfReinitializationAnalysis.h"
  • issm/trunk-jpl/src/c/classes/FemModel.cpp

    r19651 r19720  
    586586                        if(ishydrology){
    587587                                analyses_temp[numanalyses++]=HydrologyShreveAnalysisEnum;
     588                                analyses_temp[numanalyses++]=HydrologySommersAnalysisEnum;
    588589                                analyses_temp[numanalyses++]=HydrologyDCInefficientAnalysisEnum;
    589590                                analyses_temp[numanalyses++]=HydrologyDCEfficientAnalysisEnum;
  • issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp

    r19554 r19720  
    146146                        }
    147147                        else if(hydrology_model==HydrologyshreveEnum){
     148                                /*Nothing to add*/
     149                        }
     150                        else if(hydrology_model==HydrologysommersEnum){
    148151                                /*Nothing to add*/
    149152                        }
  • issm/trunk-jpl/src/c/cores/hydrology_core.cpp

    r19527 r19720  
    7979                }
    8080        }
     81
     82        else if (hydrology_model==HydrologysommersEnum){
     83                if(VerboseSolution()) _printf0_("   computing water head\n");
     84                femmodel->SetCurrentConfiguration(HydrologySommersAnalysisEnum);
     85                solutionsequence_nonlinear(femmodel,modify_loads);
     86               
     87                if(save_results){
     88                        if(VerboseSolution()) _printf0_("   saving results \n");
     89                        int outputs[2] = {HydrologyHeadEnum,HydrologyGapHeightEnum};
     90                        femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],2);
     91                       
     92                        /*unload results*/
     93                        if(VerboseSolution()) _printf0_("   saving temporary results\n");
     94                        OutputResultsx(femmodel);
     95                }
     96        }
     97
     98        else{
     99                _error_("Hydrology model "<< EnumToStringx(hydrology_model) <<" not supported yet");
     100        }
    81101}
    82102
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r19594 r19720  
    156156        HydrologyEfficientEnum,
    157157        HydrologySedimentKmaxEnum,
     158        HydrologysommersEnum,
     159        HydrologyHeadEnum,
     160        HydrologyGapHeightEnum,
     161        HydrologyBumpSpacingEnum,
     162        HydrologyBumpHeightEnum,
     163        HydrologyEnglacialInputEnum,
     164        HydrologyReynoldsEnum,
     165        HydrologySpcheadEnum,
    158166        IndependentObjectEnum,
    159167        InversionControlParametersEnum,
     
    481489        HydrologyDCInefficientAnalysisEnum,
    482490        HydrologyDCEfficientAnalysisEnum,
     491        HydrologySommersAnalysisEnum,
    483492        HydrologySolutionEnum,
    484493        MeltingAnalysisEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r19594 r19720  
    162162                case HydrologyEfficientEnum : return "HydrologyEfficient";
    163163                case HydrologySedimentKmaxEnum : return "HydrologySedimentKmax";
     164                case HydrologysommersEnum : return "Hydrologysommers";
     165                case HydrologyHeadEnum : return "HydrologyHead";
     166                case HydrologyGapHeightEnum : return "HydrologyGapHeight";
     167                case HydrologyBumpSpacingEnum : return "HydrologyBumpSpacing";
     168                case HydrologyBumpHeightEnum : return "HydrologyBumpHeight";
     169                case HydrologyEnglacialInputEnum : return "HydrologyEnglacialInput";
     170                case HydrologyReynoldsEnum : return "HydrologyReynolds";
     171                case HydrologySpcheadEnum : return "HydrologySpchead";
    164172                case IndependentObjectEnum : return "IndependentObject";
    165173                case InversionControlParametersEnum : return "InversionControlParameters";
     
    479487                case HydrologyDCInefficientAnalysisEnum : return "HydrologyDCInefficientAnalysis";
    480488                case HydrologyDCEfficientAnalysisEnum : return "HydrologyDCEfficientAnalysis";
     489                case HydrologySommersAnalysisEnum : return "HydrologySommersAnalysis";
    481490                case HydrologySolutionEnum : return "HydrologySolution";
    482491                case MeltingAnalysisEnum : return "MeltingAnalysis";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r19594 r19720  
    165165              else if (strcmp(name,"HydrologyEfficient")==0) return HydrologyEfficientEnum;
    166166              else if (strcmp(name,"HydrologySedimentKmax")==0) return HydrologySedimentKmaxEnum;
     167              else if (strcmp(name,"Hydrologysommers")==0) return HydrologysommersEnum;
     168              else if (strcmp(name,"HydrologyHead")==0) return HydrologyHeadEnum;
     169              else if (strcmp(name,"HydrologyGapHeight")==0) return HydrologyGapHeightEnum;
     170              else if (strcmp(name,"HydrologyBumpSpacing")==0) return HydrologyBumpSpacingEnum;
     171              else if (strcmp(name,"HydrologyBumpHeight")==0) return HydrologyBumpHeightEnum;
     172              else if (strcmp(name,"HydrologyEnglacialInput")==0) return HydrologyEnglacialInputEnum;
     173              else if (strcmp(name,"HydrologyReynolds")==0) return HydrologyReynoldsEnum;
     174              else if (strcmp(name,"HydrologySpchead")==0) return HydrologySpcheadEnum;
    167175              else if (strcmp(name,"IndependentObject")==0) return IndependentObjectEnum;
    168176              else if (strcmp(name,"InversionControlParameters")==0) return InversionControlParametersEnum;
     
    252260              else if (strcmp(name,"MaterialsRhoFreshwater")==0) return MaterialsRhoFreshwaterEnum;
    253261              else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;
    254               else if (strcmp(name,"MaterialsThermalExchangeVelocity")==0) return MaterialsThermalExchangeVelocityEnum;
     262         else stage=3;
     263   }
     264   if(stage==3){
     265              if (strcmp(name,"MaterialsThermalExchangeVelocity")==0) return MaterialsThermalExchangeVelocityEnum;
    255266              else if (strcmp(name,"MaterialsThermalconductivity")==0) return MaterialsThermalconductivityEnum;
    256267              else if (strcmp(name,"MaterialsTemperateiceconductivity")==0) return MaterialsTemperateiceconductivityEnum;
     
    260271              else if (strcmp(name,"MaterialsMantleDensity")==0) return MaterialsMantleDensityEnum;
    261272              else if (strcmp(name,"MeshAverageVertexConnectivity")==0) return MeshAverageVertexConnectivityEnum;
    262          else stage=3;
    263    }
    264    if(stage==3){
    265               if (strcmp(name,"MeshElements2d")==0) return MeshElements2dEnum;
     273              else if (strcmp(name,"MeshElements2d")==0) return MeshElements2dEnum;
    266274              else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
    267275              else if (strcmp(name,"MeshLowerelements")==0) return MeshLowerelementsEnum;
     
    375383              else if (strcmp(name,"SmbP")==0) return SmbPEnum;
    376384              else if (strcmp(name,"SmbSwf")==0) return SmbSwfEnum;
    377               else if (strcmp(name,"SmbEAir")==0) return SmbEAirEnum;
     385         else stage=4;
     386   }
     387   if(stage==4){
     388              if (strcmp(name,"SmbEAir")==0) return SmbEAirEnum;
    378389              else if (strcmp(name,"SmbPAir")==0) return SmbPAirEnum;
    379390              else if (strcmp(name,"SmbTmean")==0) return SmbTmeanEnum;
     
    383394              else if (strcmp(name,"SmbDt")==0) return SmbDtEnum;
    384395              else if (strcmp(name,"SmbDz")==0) return SmbDzEnum;
    385          else stage=4;
    386    }
    387    if(stage==4){
    388               if (strcmp(name,"SmbAIdx")==0) return SmbAIdxEnum;
     396              else if (strcmp(name,"SmbAIdx")==0) return SmbAIdxEnum;
    389397              else if (strcmp(name,"SmbSwIdx")==0) return SmbSwIdxEnum;
    390398              else if (strcmp(name,"SmbDenIdx")==0) return SmbDenIdxEnum;
     
    488496              else if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum;
    489497              else if (strcmp(name,"HydrologyDCEfficientAnalysis")==0) return HydrologyDCEfficientAnalysisEnum;
     498              else if (strcmp(name,"HydrologySommersAnalysis")==0) return HydrologySommersAnalysisEnum;
    490499              else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;
    491500              else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
     
    497506              else if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum;
    498507              else if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum;
    499               else if (strcmp(name,"DepthAverageAnalysis")==0) return DepthAverageAnalysisEnum;
     508         else stage=5;
     509   }
     510   if(stage==5){
     511              if (strcmp(name,"DepthAverageAnalysis")==0) return DepthAverageAnalysisEnum;
    500512              else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum;
    501513              else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
     
    506518              else if (strcmp(name,"UzawaPressureAnalysis")==0) return UzawaPressureAnalysisEnum;
    507519              else if (strcmp(name,"GiaSolution")==0) return GiaSolutionEnum;
    508          else stage=5;
    509    }
    510    if(stage==5){
    511               if (strcmp(name,"GiaAnalysis")==0) return GiaAnalysisEnum;
     520              else if (strcmp(name,"GiaAnalysis")==0) return GiaAnalysisEnum;
    512521              else if (strcmp(name,"MeshdeformationSolution")==0) return MeshdeformationSolutionEnum;
    513522              else if (strcmp(name,"MeshdeformationAnalysis")==0) return MeshdeformationAnalysisEnum;
     
    620629              else if (strcmp(name,"Adjointx")==0) return AdjointxEnum;
    621630              else if (strcmp(name,"Adjointy")==0) return AdjointyEnum;
    622               else if (strcmp(name,"Adjointz")==0) return AdjointzEnum;
     631         else stage=6;
     632   }
     633   if(stage==6){
     634              if (strcmp(name,"Adjointz")==0) return AdjointzEnum;
    623635              else if (strcmp(name,"BalancethicknessMisfit")==0) return BalancethicknessMisfitEnum;
    624636              else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum;
     
    629641              else if (strcmp(name,"FractionIncrement")==0) return FractionIncrementEnum;
    630642              else if (strcmp(name,"Friction")==0) return FrictionEnum;
    631          else stage=6;
    632    }
    633    if(stage==6){
    634               if (strcmp(name,"Internal")==0) return InternalEnum;
     643              else if (strcmp(name,"Internal")==0) return InternalEnum;
    635644              else if (strcmp(name,"MassFlux")==0) return MassFluxEnum;
    636645              else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
     
    743752              else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum;
    744753              else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum;
    745               else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;
     754         else stage=7;
     755   }
     756   if(stage==7){
     757              if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum;
    746758              else if (strcmp(name,"J")==0) return JEnum;
    747759              else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum;
     
    752764              else if (strcmp(name,"Outputdefinition1")==0) return Outputdefinition1Enum;
    753765              else if (strcmp(name,"Outputdefinition2")==0) return Outputdefinition2Enum;
    754          else stage=7;
    755    }
    756    if(stage==7){
    757               if (strcmp(name,"Outputdefinition3")==0) return Outputdefinition3Enum;
     766              else if (strcmp(name,"Outputdefinition3")==0) return Outputdefinition3Enum;
    758767              else if (strcmp(name,"Outputdefinition4")==0) return Outputdefinition4Enum;
    759768              else if (strcmp(name,"Outputdefinition5")==0) return Outputdefinition5Enum;
     
    866875              else if (strcmp(name,"MisfitTimeinterpolation")==0) return MisfitTimeinterpolationEnum;
    867876              else if (strcmp(name,"MisfitWeights")==0) return MisfitWeightsEnum;
    868               else if (strcmp(name,"MisfitWeightsEnum")==0) return MisfitWeightsEnumEnum;
     877         else stage=8;
     878   }
     879   if(stage==8){
     880              if (strcmp(name,"MisfitWeightsEnum")==0) return MisfitWeightsEnumEnum;
    869881              else if (strcmp(name,"SurfaceObservation")==0) return SurfaceObservationEnum;
    870882              else if (strcmp(name,"WeightsSurfaceObservation")==0) return WeightsSurfaceObservationEnum;
     
    875887              else if (strcmp(name,"MinVel")==0) return MinVelEnum;
    876888              else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;
    877          else stage=8;
    878    }
    879    if(stage==8){
    880               if (strcmp(name,"MinVx")==0) return MinVxEnum;
     889              else if (strcmp(name,"MinVx")==0) return MinVxEnum;
    881890              else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
    882891              else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;
  • issm/trunk-jpl/src/m/classes/model.m

    r19642 r19720  
    182182                                md.friction.C=project2d(md,md.friction.C,1);
    183183                                md.friction.m=project2d(md,md.friction.m,1);
     184                        elseif isa(md.friction,'frictionweertmantemp'),
     185                                md.friction.C=project2d(md,md.friction.C,1);
     186                                md.friction.m=project2d(md,md.friction.m,1);
     187                        else
     188                                disp('friction type not supported');
    184189            end
    185190
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r19594 r19720  
    154154def HydrologyEfficientEnum(): return StringToEnum("HydrologyEfficient")[0]
    155155def HydrologySedimentKmaxEnum(): return StringToEnum("HydrologySedimentKmax")[0]
     156def HydrologysommersEnum(): return StringToEnum("Hydrologysommers")[0]
     157def HydrologyHeadEnum(): return StringToEnum("HydrologyHead")[0]
     158def HydrologyGapHeightEnum(): return StringToEnum("HydrologyGapHeight")[0]
     159def HydrologyBumpSpacingEnum(): return StringToEnum("HydrologyBumpSpacing")[0]
     160def HydrologyBumpHeightEnum(): return StringToEnum("HydrologyBumpHeight")[0]
     161def HydrologyEnglacialInputEnum(): return StringToEnum("HydrologyEnglacialInput")[0]
     162def HydrologyReynoldsEnum(): return StringToEnum("HydrologyReynolds")[0]
     163def HydrologySpcheadEnum(): return StringToEnum("HydrologySpchead")[0]
    156164def IndependentObjectEnum(): return StringToEnum("IndependentObject")[0]
    157165def InversionControlParametersEnum(): return StringToEnum("InversionControlParameters")[0]
     
    471479def HydrologyDCInefficientAnalysisEnum(): return StringToEnum("HydrologyDCInefficientAnalysis")[0]
    472480def HydrologyDCEfficientAnalysisEnum(): return StringToEnum("HydrologyDCEfficientAnalysis")[0]
     481def HydrologySommersAnalysisEnum(): return StringToEnum("HydrologySommersAnalysis")[0]
    473482def HydrologySolutionEnum(): return StringToEnum("HydrologySolution")[0]
    474483def MeltingAnalysisEnum(): return StringToEnum("MeltingAnalysis")[0]
Note: See TracChangeset for help on using the changeset viewer.