Changeset 18093 for issm/trunk-jpl/src


Ignore:
Timestamp:
06/03/14 14:59:43 (11 years ago)
Author:
seroussi
Message:

BEW: adding new class for floating ice melt rate

Location:
issm/trunk-jpl/src
Files:
16 added
11 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/Makefile.am

    r18009 r18093  
    317317                                        ./modules/InputUpdateFromVectorx/InputUpdateFromVectorx.h\
    318318                                        ./modules/InputUpdateFromVectorx/InputUpdateFromVectorx.cpp\
     319                                        ./modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.h\
     320                                        ./modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp\
    319321                                        ./modules/ConfigureObjectsx/ConfigureObjectsx.h\
    320322                                        ./modules/ConfigureObjectsx/ConfigureObjectsx.cpp\
  • issm/trunk-jpl/src/c/classes/Elements/Element.cpp

    r18078 r18093  
    892892}
    893893/*}}}*/
     894void       Element::LinearFloatingiceMeltingRate(){/*{{{*/
     895
     896        int numvertices      = this->GetNumberOfVertices();
     897        IssmDouble  deepwaterel,upperwaterel,deepwatermelt;
     898        IssmDouble* base     = xNew<IssmDouble>(numvertices);
     899        IssmDouble* values   = xNew<IssmDouble>(numvertices);
     900
     901        parameters->FindParam(&deepwaterel,BasalforcingsDeepwaterElevationEnum);
     902        parameters->FindParam(&upperwaterel,BasalforcingsUpperwaterElevationEnum);
     903        parameters->FindParam(&deepwatermelt,BasalforcingsDeepwaterMeltingRateEnum);
     904
     905        this->GetInputListOnVertices(base,BaseEnum);
     906        for(int i=0;i<numvertices;i++){
     907                if(base[i]>upperwaterel)      values[i]=0;
     908                else if (base[i]<deepwaterel) values[i]=deepwatermelt;
     909                else values[i]=deepwatermelt*(base[i]-upperwaterel)/(deepwaterel-upperwaterel);
     910        }
     911
     912        this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,values,P1Enum);
     913
     914}/*}}}*/
    894915ElementVector* Element::NewElementVector(int approximation_enum){/*{{{*/
    895916        return new ElementVector(nodes,this->GetNumberOfNodes(),this->parameters,approximation_enum);
  • issm/trunk-jpl/src/c/classes/Elements/Element.h

    r18078 r18093  
    113113                bool         IsInput(int name);
    114114                bool       IsFloating();
     115                void       LinearFloatingiceMeltingRate();
    115116                ElementVector*  NewElementVector(int approximation_enum=NoneApproximationEnum);
    116117                ElementMatrix*  NewElementMatrix(int approximation_enum=NoneApproximationEnum);
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r18068 r18093  
    1919
    2020        int         i,j,m,k;
    21         int         numoutputs,materialtype,smb_model;
     21        int         numoutputs,materialtype,smb_model,basalforcing_model;
    2222        char**      requestedoutputs = NULL;
    2323        IssmDouble  time;
     
    133133        }
    134134
     135        /*Basal forcing parameters*/
     136        parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsEnum));
     137        iomodel->Constant(&basalforcing_model,BasalforcingsEnum);
     138        switch(basalforcing_model){
     139                case FloatingMeltRateEnum:
     140                        /*Nothing to add to parameters*/
     141                        break;
     142                case LinearFloatingMeltRateEnum:
     143                        parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsDeepwaterMeltingRateEnum));
     144                        parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsDeepwaterElevationEnum));
     145                        parameters->AddObject(iomodel->CopyConstantObject(BasalforcingsUpperwaterElevationEnum));
     146                        break;
     147                default:
     148                        _error_("Basal forcing model "<<EnumToStringx(smb_model)<<" not supported yet");
     149        }
     150
    135151        /*some parameters that did not come with the iomodel: */
    136152        parameters->AddObject(new IntParam(SolutionTypeEnum,solution_type));
  • issm/trunk-jpl/src/c/modules/modules.h

    r17995 r18093  
    5454#include "./Kml2Expx/Kml2Expx.h"
    5555#include "./Krigingx/Krigingx.h"
     56#include "./FloatingiceMeltingRatex/FloatingiceMeltingRatex.h"
    5657#include "./Mergesolutionfromftogx/Mergesolutionfromftogx.h"
    5758#include "./MeshPartitionx/MeshPartitionx.h"
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r18068 r18093  
    3838        BalancethicknessStabilizationEnum,
    3939        BalancethicknessThickeningRateEnum,
     40        BasalforcingsEnum,
    4041        BasalforcingsGeothermalfluxEnum,
    4142        BasalforcingsGroundediceMeltingRateEnum,
     
    4445        BasalforcingsDeepwaterElevationEnum,
    4546        BasalforcingsUpperwaterElevationEnum,
     47        FloatingMeltRateEnum,
     48        LinearFloatingMeltRateEnum,
    4649        BedEnum,
    4750        BaseEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r18068 r18093  
    4646                case BalancethicknessStabilizationEnum : return "BalancethicknessStabilization";
    4747                case BalancethicknessThickeningRateEnum : return "BalancethicknessThickeningRate";
     48                case BasalforcingsEnum : return "Basalforcings";
    4849                case BasalforcingsGeothermalfluxEnum : return "BasalforcingsGeothermalflux";
    4950                case BasalforcingsGroundediceMeltingRateEnum : return "BasalforcingsGroundediceMeltingRate";
     
    5253                case BasalforcingsDeepwaterElevationEnum : return "BasalforcingsDeepwaterElevation";
    5354                case BasalforcingsUpperwaterElevationEnum : return "BasalforcingsUpperwaterElevation";
     55                case FloatingMeltRateEnum : return "FloatingMeltRate";
     56                case LinearFloatingMeltRateEnum : return "LinearFloatingMeltRate";
    5457                case BedEnum : return "Bed";
    5558                case BaseEnum : return "Base";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r18068 r18093  
    4646              else if (strcmp(name,"BalancethicknessStabilization")==0) return BalancethicknessStabilizationEnum;
    4747              else if (strcmp(name,"BalancethicknessThickeningRate")==0) return BalancethicknessThickeningRateEnum;
     48              else if (strcmp(name,"Basalforcings")==0) return BasalforcingsEnum;
    4849              else if (strcmp(name,"BasalforcingsGeothermalflux")==0) return BasalforcingsGeothermalfluxEnum;
    4950              else if (strcmp(name,"BasalforcingsGroundediceMeltingRate")==0) return BasalforcingsGroundediceMeltingRateEnum;
     
    5253              else if (strcmp(name,"BasalforcingsDeepwaterElevation")==0) return BasalforcingsDeepwaterElevationEnum;
    5354              else if (strcmp(name,"BasalforcingsUpperwaterElevation")==0) return BasalforcingsUpperwaterElevationEnum;
     55              else if (strcmp(name,"FloatingMeltRate")==0) return FloatingMeltRateEnum;
     56              else if (strcmp(name,"LinearFloatingMeltRate")==0) return LinearFloatingMeltRateEnum;
    5457              else if (strcmp(name,"Bed")==0) return BedEnum;
    5558              else if (strcmp(name,"Base")==0) return BaseEnum;
     
    134137              else if (strcmp(name,"HydrologydcSedimentlimit")==0) return HydrologydcSedimentlimitEnum;
    135138              else if (strcmp(name,"HydrologydcTransferFlag")==0) return HydrologydcTransferFlagEnum;
    136               else if (strcmp(name,"HydrologydcLeakageFactor")==0) return HydrologydcLeakageFactorEnum;
    137               else if (strcmp(name,"HydrologydcPenaltyFactor")==0) return HydrologydcPenaltyFactorEnum;
    138               else if (strcmp(name,"HydrologydcPenaltyLock")==0) return HydrologydcPenaltyLockEnum;
    139139         else stage=2;
    140140   }
    141141   if(stage==2){
    142               if (strcmp(name,"HydrologydcBasalMoulinInput")==0) return HydrologydcBasalMoulinInputEnum;
     142              if (strcmp(name,"HydrologydcLeakageFactor")==0) return HydrologydcLeakageFactorEnum;
     143              else if (strcmp(name,"HydrologydcPenaltyFactor")==0) return HydrologydcPenaltyFactorEnum;
     144              else if (strcmp(name,"HydrologydcPenaltyLock")==0) return HydrologydcPenaltyLockEnum;
     145              else if (strcmp(name,"HydrologydcBasalMoulinInput")==0) return HydrologydcBasalMoulinInputEnum;
    143146              else if (strcmp(name,"HydrologyLayer")==0) return HydrologyLayerEnum;
    144147              else if (strcmp(name,"HydrologySediment")==0) return HydrologySedimentEnum;
     
    257260              else if (strcmp(name,"QmuMassFluxSegmentsPresent")==0) return QmuMassFluxSegmentsPresentEnum;
    258261              else if (strcmp(name,"QmuNumberofpartitions")==0) return QmuNumberofpartitionsEnum;
    259               else if (strcmp(name,"QmuNumberofresponses")==0) return QmuNumberofresponsesEnum;
    260               else if (strcmp(name,"QmuPartition")==0) return QmuPartitionEnum;
    261               else if (strcmp(name,"QmuResponsedescriptors")==0) return QmuResponsedescriptorsEnum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"QmuVariabledescriptors")==0) return QmuVariabledescriptorsEnum;
     265              if (strcmp(name,"QmuNumberofresponses")==0) return QmuNumberofresponsesEnum;
     266              else if (strcmp(name,"QmuPartition")==0) return QmuPartitionEnum;
     267              else if (strcmp(name,"QmuResponsedescriptors")==0) return QmuResponsedescriptorsEnum;
     268              else if (strcmp(name,"QmuVariabledescriptors")==0) return QmuVariabledescriptorsEnum;
    266269              else if (strcmp(name,"QmuMaterialsRheologyB")==0) return QmuMaterialsRheologyBEnum;
    267270              else if (strcmp(name,"RiftsNumrifts")==0) return RiftsNumriftsEnum;
     
    380383              else if (strcmp(name,"HydrologyDCEfficientAnalysis")==0) return HydrologyDCEfficientAnalysisEnum;
    381384              else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum;
    382               else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
    383               else if (strcmp(name,"MasstransportAnalysis")==0) return MasstransportAnalysisEnum;
    384               else if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum;
     388              if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
     389              else if (strcmp(name,"MasstransportAnalysis")==0) return MasstransportAnalysisEnum;
     390              else if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum;
     391              else if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum;
    389392              else if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum;
    390393              else if (strcmp(name,"SurfaceNormalVelocity")==0) return SurfaceNormalVelocityEnum;
     
    503506              else if (strcmp(name,"Friction")==0) return FrictionEnum;
    504507              else if (strcmp(name,"Internal")==0) return InternalEnum;
    505               else if (strcmp(name,"MassFlux")==0) return MassFluxEnum;
    506               else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
    507               else if (strcmp(name,"Misfit")==0) return MisfitEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"Pressure")==0) return PressureEnum;
     511              if (strcmp(name,"MassFlux")==0) return MassFluxEnum;
     512              else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
     513              else if (strcmp(name,"Misfit")==0) return MisfitEnum;
     514              else if (strcmp(name,"Pressure")==0) return PressureEnum;
    512515              else if (strcmp(name,"PressurePicard")==0) return PressurePicardEnum;
    513516              else if (strcmp(name,"QmuPressure")==0) return QmuPressureEnum;
     
    626629              else if (strcmp(name,"MassfluxatgateName")==0) return MassfluxatgateNameEnum;
    627630              else if (strcmp(name,"MassfluxatgateSegments")==0) return MassfluxatgateSegmentsEnum;
    628               else if (strcmp(name,"MisfitName")==0) return MisfitNameEnum;
    629               else if (strcmp(name,"MisfitModelEnum")==0) return MisfitModelEnumEnum;
    630               else if (strcmp(name,"MisfitObservation")==0) return MisfitObservationEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"MisfitObservationEnum")==0) return MisfitObservationEnumEnum;
     634              if (strcmp(name,"MisfitName")==0) return MisfitNameEnum;
     635              else if (strcmp(name,"MisfitModelEnum")==0) return MisfitModelEnumEnum;
     636              else if (strcmp(name,"MisfitObservation")==0) return MisfitObservationEnum;
     637              else if (strcmp(name,"MisfitObservationEnum")==0) return MisfitObservationEnumEnum;
    635638              else if (strcmp(name,"MisfitTimeinterpolation")==0) return MisfitTimeinterpolationEnum;
    636639              else if (strcmp(name,"MisfitWeights")==0) return MisfitWeightsEnum;
  • issm/trunk-jpl/src/m/classes/basalforcings.m

    r18068 r18093  
    7070                        yts=365.0*24.0*3600.0;
    7171
     72                        WriteData(fid,'enum',BasalforcingsEnum(),'data',FloatingMeltRateEnum(),'format','Integer');
    7273                        WriteData(fid,'object',obj,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)
    7374                        WriteData(fid,'object',obj,'fieldname','floatingice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)
  • issm/trunk-jpl/src/m/classes/basalforcings.py

    r18068 r18093  
    6666                yts=365.0*24.0*3600.0
    6767
     68                WriteData(fid,'enum',BasalforcingsEnum(),'data',FloatingMeltRateEnum(),'format','Integer');
    6869                WriteData(fid,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)
    6970                WriteData(fid,'object',self,'fieldname','floatingice_melting_rate','format','DoubleMat','mattype',1,'scale',1./yts,'forcinglength',md.mesh.numberofvertices+1)
  • issm/trunk-jpl/src/m/enum/EnumDefinitions.py

    r18068 r18093  
    3838def BalancethicknessStabilizationEnum(): return StringToEnum("BalancethicknessStabilization")[0]
    3939def BalancethicknessThickeningRateEnum(): return StringToEnum("BalancethicknessThickeningRate")[0]
     40def BasalforcingsEnum(): return StringToEnum("Basalforcings")[0]
    4041def BasalforcingsGeothermalfluxEnum(): return StringToEnum("BasalforcingsGeothermalflux")[0]
    4142def BasalforcingsGroundediceMeltingRateEnum(): return StringToEnum("BasalforcingsGroundediceMeltingRate")[0]
     
    4445def BasalforcingsDeepwaterElevationEnum(): return StringToEnum("BasalforcingsDeepwaterElevation")[0]
    4546def BasalforcingsUpperwaterElevationEnum(): return StringToEnum("BasalforcingsUpperwaterElevation")[0]
     47def FloatingMeltRateEnum(): return StringToEnum("FloatingMeltRate")[0]
     48def LinearFloatingMeltRateEnum(): return StringToEnum("LinearFloatingMeltRate")[0]
    4649def BedEnum(): return StringToEnum("Bed")[0]
    4750def BaseEnum(): return StringToEnum("Base")[0]
Note: See TracChangeset for help on using the changeset viewer.