Changeset 25775


Ignore:
Timestamp:
11/20/20 17:24:18 (4 years ago)
Author:
Mathieu Morlighem
Message:

CHG: making alpha a field

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

Legend:

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

    r25763 r25775  
    9797                        break;
    9898                case MismipFloatingMeltRateEnum:
     99                        iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum);
    99100                        break;
    100101                case MantlePlumeGeothermalFluxEnum:
  • issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp

    r25763 r25775  
    171171                        break;
    172172                case MismipFloatingMeltRateEnum:
     173                        iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum);
    173174                        break;
    174175                case MantlePlumeGeothermalFluxEnum:
  • issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp

    r25763 r25775  
    801801                                break;
    802802                        case MismipFloatingMeltRateEnum:
     803                                iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum);
    803804                                break;
    804805                        case MantlePlumeGeothermalFluxEnum:
  • issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp

    r25763 r25775  
    125125                        break;
    126126                case MismipFloatingMeltRateEnum:
     127                        iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum);
    127128                        break;
    128129                case MantlePlumeGeothermalFluxEnum:
  • issm/trunk-jpl/src/c/classes/Elements/Element.cpp

    r25728 r25775  
    23442344/*}}}*/
    23452345void       Element::MismipFloatingiceMeltingRate(){/*{{{*/
     2346
     2347        IssmDouble thresholdthickness,upperdepthmelt;
     2348        IssmDouble base[MAXVERTICES];
     2349        IssmDouble bed[MAXVERTICES];
     2350        IssmDouble meltratefactor[MAXVERTICES];
     2351        IssmDouble values[MAXVERTICES];
     2352
    23462353        const int NUM_VERTICES = this->GetNumberOfVertices();
    23472354
    2348         IssmDouble  meltratefactor,thresholdthickness,upperdepthmelt;
    2349         IssmDouble* base     = xNew<IssmDouble>(NUM_VERTICES);
    2350         IssmDouble* bed      = xNew<IssmDouble>(NUM_VERTICES);
    2351         IssmDouble* values   = xNew<IssmDouble>(NUM_VERTICES);
    2352 
    2353         parameters->FindParam(&meltratefactor,BasalforcingsMeltrateFactorEnum);
    23542355        parameters->FindParam(&thresholdthickness,BasalforcingsThresholdThicknessEnum);
    23552356        parameters->FindParam(&upperdepthmelt,BasalforcingsUpperdepthMeltEnum);
    2356 
    23572357        this->GetInputListOnVertices(base,BaseEnum);
    23582358        this->GetInputListOnVertices(bed,BedEnum);
     2359        this->GetInputListOnVertices(meltratefactor,BasalforcingsMeltrateFactorEnum);
    23592360        for(int i=0;i<NUM_VERTICES;i++){
    23602361                if(base[i]>upperdepthmelt){
     
    23622363                }
    23632364                else{
    2364                         values[i]=meltratefactor*tanh((base[i]-bed[i])/thresholdthickness)*(upperdepthmelt-base[i]);
     2365                        values[i]=meltratefactor[i]*tanh((base[i]-bed[i])/thresholdthickness)*(upperdepthmelt-base[i]);
    23652366                }
    23662367        }
    23672368
    23682369        this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,values,P1Enum);
    2369         xDelete<IssmDouble>(base);
    2370         xDelete<IssmDouble>(bed);
    2371         xDelete<IssmDouble>(values);
    23722370
    23732371}/*}}}*/
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r25637 r25775  
    201201                        break;
    202202                case MismipFloatingMeltRateEnum:
    203                         parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum));
    204203                        parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.threshold_thickness",BasalforcingsThresholdThicknessEnum));
    205204                        parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.upperdepth_melt",BasalforcingsUpperdepthMeltEnum));
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r25771 r25775  
    7878syn keyword cConstant BasalforcingsLowercrustheatEnum
    7979syn keyword cConstant BasalforcingsMantleconductivityEnum
    80 syn keyword cConstant BasalforcingsMeltrateFactorEnum
    8180syn keyword cConstant BasalforcingsNusseltEnum
    8281syn keyword cConstant BasalforcingsPicoAverageOverturningEnum
     
    516515syn keyword cConstant BasalforcingsIsmip6TfShelfEnum
    517516syn keyword cConstant BasalforcingsIsmip6MeltAnomalyEnum
     517syn keyword cConstant BasalforcingsMeltrateFactorEnum
    518518syn keyword cConstant BasalforcingsOceanSalinityEnum
    519519syn keyword cConstant BasalforcingsOceanTempEnum
     
    13921392syn keyword cType Cfsurfacesquare
    13931393syn keyword cType Channel
    1394 syn keyword cType classes
    13951394syn keyword cType Constraint
    13961395syn keyword cType Constraints
     
    13991398syn keyword cType ControlInput
    14001399syn keyword cType Covertree
     1400syn keyword cType DataSetParam
    14011401syn keyword cType DatasetInput
    1402 syn keyword cType DataSetParam
    14031402syn keyword cType Definition
    14041403syn keyword cType DependentObject
     
    14131412syn keyword cType ElementInput
    14141413syn keyword cType ElementMatrix
     1414syn keyword cType ElementVector
    14151415syn keyword cType Elements
    1416 syn keyword cType ElementVector
    14171416syn keyword cType ExponentialVariogram
    14181417syn keyword cType ExternalResult
     
    14211420syn keyword cType Friction
    14221421syn keyword cType Gauss
    1423 syn keyword cType GaussianVariogram
    1424 syn keyword cType gaussobjects
    14251422syn keyword cType GaussPenta
    14261423syn keyword cType GaussSeg
    14271424syn keyword cType GaussTetra
    14281425syn keyword cType GaussTria
     1426syn keyword cType GaussianVariogram
    14291427syn keyword cType GenericExternalResult
    14301428syn keyword cType GenericOption
     
    14411439syn keyword cType IssmDirectApplicInterface
    14421440syn keyword cType IssmParallelDirectApplicInterface
    1443 syn keyword cType krigingobjects
    14441441syn keyword cType Load
    14451442syn keyword cType Loads
     
    14521449syn keyword cType Matice
    14531450syn keyword cType Matlitho
    1454 syn keyword cType matrixobjects
    14551451syn keyword cType MatrixParam
    14561452syn keyword cType Misfit
     
    14651461syn keyword cType Observations
    14661462syn keyword cType Option
     1463syn keyword cType OptionUtilities
    14671464syn keyword cType Options
    1468 syn keyword cType OptionUtilities
    14691465syn keyword cType Param
    14701466syn keyword cType Parameters
     
    14801476syn keyword cType Regionaloutput
    14811477syn keyword cType Results
     1478syn keyword cType RiftStruct
    14821479syn keyword cType Riftfront
    1483 syn keyword cType RiftStruct
    14841480syn keyword cType SealevelMasks
    14851481syn keyword cType Seg
    14861482syn keyword cType SegInput
     1483syn keyword cType SegRef
    14871484syn keyword cType Segment
    1488 syn keyword cType SegRef
    14891485syn keyword cType SpcDynamic
    14901486syn keyword cType SpcStatic
     
    15051501syn keyword cType Vertex
    15061502syn keyword cType Vertices
     1503syn keyword cType classes
     1504syn keyword cType gaussobjects
     1505syn keyword cType krigingobjects
     1506syn keyword cType matrixobjects
    15071507syn keyword cType AdjointBalancethickness2Analysis
    15081508syn keyword cType AdjointBalancethicknessAnalysis
     
    15231523syn keyword cType FreeSurfaceBaseAnalysis
    15241524syn keyword cType FreeSurfaceTopAnalysis
     1525syn keyword cType GLheightadvectionAnalysis
    15251526syn keyword cType GiaAnalysis
    1526 syn keyword cType GLheightadvectionAnalysis
    15271527syn keyword cType HydrologyDCEfficientAnalysis
    15281528syn keyword cType HydrologyDCInefficientAnalysis
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r25771 r25775  
    7272        BasalforcingsLowercrustheatEnum,
    7373        BasalforcingsMantleconductivityEnum,
    74         BasalforcingsMeltrateFactorEnum,
    7574        BasalforcingsNusseltEnum,
    7675        BasalforcingsPicoAverageOverturningEnum,
     
    512511        BasalforcingsIsmip6TfShelfEnum,
    513512        BasalforcingsIsmip6MeltAnomalyEnum,
     513        BasalforcingsMeltrateFactorEnum,
    514514        BasalforcingsOceanSalinityEnum,
    515515        BasalforcingsOceanTempEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r25771 r25775  
    8080                case BasalforcingsLowercrustheatEnum : return "BasalforcingsLowercrustheat";
    8181                case BasalforcingsMantleconductivityEnum : return "BasalforcingsMantleconductivity";
    82                 case BasalforcingsMeltrateFactorEnum : return "BasalforcingsMeltrateFactor";
    8382                case BasalforcingsNusseltEnum : return "BasalforcingsNusselt";
    8483                case BasalforcingsPicoAverageOverturningEnum : return "BasalforcingsPicoAverageOverturning";
     
    518517                case BasalforcingsIsmip6TfShelfEnum : return "BasalforcingsIsmip6TfShelf";
    519518                case BasalforcingsIsmip6MeltAnomalyEnum : return "BasalforcingsIsmip6MeltAnomaly";
     519                case BasalforcingsMeltrateFactorEnum : return "BasalforcingsMeltrateFactor";
    520520                case BasalforcingsOceanSalinityEnum : return "BasalforcingsOceanSalinity";
    521521                case BasalforcingsOceanTempEnum : return "BasalforcingsOceanTemp";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r25771 r25775  
    8080              else if (strcmp(name,"BasalforcingsLowercrustheat")==0) return BasalforcingsLowercrustheatEnum;
    8181              else if (strcmp(name,"BasalforcingsMantleconductivity")==0) return BasalforcingsMantleconductivityEnum;
    82               else if (strcmp(name,"BasalforcingsMeltrateFactor")==0) return BasalforcingsMeltrateFactorEnum;
    8382              else if (strcmp(name,"BasalforcingsNusselt")==0) return BasalforcingsNusseltEnum;
    8483              else if (strcmp(name,"BasalforcingsPicoAverageOverturning")==0) return BasalforcingsPicoAverageOverturningEnum;
     
    137136              else if (strcmp(name,"DebugProfiling")==0) return DebugProfilingEnum;
    138137              else if (strcmp(name,"DomainDimension")==0) return DomainDimensionEnum;
     138              else if (strcmp(name,"DomainType")==0) return DomainTypeEnum;
    139139         else stage=2;
    140140   }
    141141   if(stage==2){
    142               if (strcmp(name,"DomainType")==0) return DomainTypeEnum;
    143               else if (strcmp(name,"DslModel")==0) return DslModelEnum;
     142              if (strcmp(name,"DslModel")==0) return DslModelEnum;
    144143              else if (strcmp(name,"DslModelid")==0) return DslModelidEnum;
    145144              else if (strcmp(name,"DslNummodels")==0) return DslNummodelsEnum;
     
    260259              else if (strcmp(name,"LoveMu0")==0) return LoveMu0Enum;
    261260              else if (strcmp(name,"LoveNfreq")==0) return LoveNfreqEnum;
     261              else if (strcmp(name,"LoveR0")==0) return LoveR0Enum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"LoveR0")==0) return LoveR0Enum;
    266               else if (strcmp(name,"LoveShNmax")==0) return LoveShNmaxEnum;
     265              if (strcmp(name,"LoveShNmax")==0) return LoveShNmaxEnum;
    267266              else if (strcmp(name,"LoveShNmin")==0) return LoveShNminEnum;
    268267              else if (strcmp(name,"MassFluxSegments")==0) return MassFluxSegmentsEnum;
     
    383382              else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum;
    384383              else if (strcmp(name,"SmbAIce")==0) return SmbAIceEnum;
     384              else if (strcmp(name,"SmbAIdx")==0) return SmbAIdxEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"SmbAIdx")==0) return SmbAIdxEnum;
    389               else if (strcmp(name,"SmbASnow")==0) return SmbASnowEnum;
     388              if (strcmp(name,"SmbASnow")==0) return SmbASnowEnum;
    390389              else if (strcmp(name,"SmbAccualti")==0) return SmbAccualtiEnum;
    391390              else if (strcmp(name,"SmbAccugrad")==0) return SmbAccugradEnum;
     
    506505              else if (strcmp(name,"ParametersEND")==0) return ParametersENDEnum;
    507506              else if (strcmp(name,"InputsSTART")==0) return InputsSTARTEnum;
     507              else if (strcmp(name,"Adjoint")==0) return AdjointEnum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"Adjoint")==0) return AdjointEnum;
    512               else if (strcmp(name,"Adjointp")==0) return AdjointpEnum;
     511              if (strcmp(name,"Adjointp")==0) return AdjointpEnum;
    513512              else if (strcmp(name,"Adjointx")==0) return AdjointxEnum;
    514513              else if (strcmp(name,"Adjointy")==0) return AdjointyEnum;
     
    530529              else if (strcmp(name,"BasalforcingsIsmip6TfShelf")==0) return BasalforcingsIsmip6TfShelfEnum;
    531530              else if (strcmp(name,"BasalforcingsIsmip6MeltAnomaly")==0) return BasalforcingsIsmip6MeltAnomalyEnum;
     531              else if (strcmp(name,"BasalforcingsMeltrateFactor")==0) return BasalforcingsMeltrateFactorEnum;
    532532              else if (strcmp(name,"BasalforcingsOceanSalinity")==0) return BasalforcingsOceanSalinityEnum;
    533533              else if (strcmp(name,"BasalforcingsOceanTemp")==0) return BasalforcingsOceanTempEnum;
  • issm/trunk-jpl/src/m/classes/mismipbasalforcings.m

    r22505 r25775  
    88                groundedice_melting_rate  = NaN;
    99                meltrate_factor           = NaN;
    10                 threshold_thickness       = NaN;
    11                 upperdepth_melt           = NaN;
     10                threshold_thickness       = 0.;
     11                upperdepth_melt           = 0.;
    1212                geothermalflux            = NaN;
    1313        end
     
    4747                        if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0),
    4848                                md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
    49                                 md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',1);
     49                                md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'universal',1,'NaN',1,'Inf',1);
    5050                                md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1);
    5151                                md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1);
     
    5353                        if ismember('BalancethicknessAnalysis',analyses),
    5454                                md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
    55                                 md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',1);
     55                                md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'universal',1,'NaN',1,'Inf',1);
    5656                                md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1);
    5757                                md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1);
     
    5959                        if ismember('ThermalAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.isthermal==0),
    6060                                md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
    61                                 md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',1);
     61                                md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'universal',1,'NaN',1,'Inf',1);
    6262                                md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1);
    6363                                md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1);
     
    8888                        WriteData(fid,prefix,'object',self,'fieldname','groundedice_melting_rate','format','DoubleMat','name','md.basalforcings.groundedice_melting_rate','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts)
    8989                        WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','name','md.basalforcings.geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
    90                         WriteData(fid,prefix,'object',self,'fieldname','meltrate_factor','format','Double','scale',1./yts)
     90                        WriteData(fid,prefix,'object',self,'fieldname','meltrate_factor','format','DoubleMat','mattype',1,'scale',1./yts)
    9191                        WriteData(fid,prefix,'object',self,'fieldname','threshold_thickness','format','Double')
    9292                        WriteData(fid,prefix,'object',self,'fieldname','upperdepth_melt','format','Double')
  • issm/trunk-jpl/src/m/classes/mismipbasalforcings.py

    r25688 r25775  
    1616    def __init__(self):  # {{{
    1717        self.groundedice_melting_rate = np.nan
    18         self.meltrate_factor = np.nan
    19         self.threshold_thickness = np.nan
    20         self.upperdepth_melt = np.nan
    21         self.geothermalflux = np.nan
     18        self.meltrate_factor          = np.nan
     19        self.threshold_thickness      = 0.
     20        self.upperdepth_melt          = 0.
     21        self.geothermalflux           = np.nan
    2222        self.setdefaultparameters()
    2323    #}}}
    24 
    2524    def __repr__(self):  # {{{
    2625        s = '   MISMIP + basal melt parameterization\n'
     
    3231        return s
    3332    #}}}
    34 
    3533    def extrude(self, md):  # {{{
    3634        self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1)
     
    3836        return self
    3937    #}}}
    40 
    4138    def initialize(self, md):  # {{{
    4239        if np.all(np.isnan(self.groundedice_melting_rate)):
     
    4845        return self
    4946    #}}}
    50 
    5147    def setdefaultparameters(self):  # {{{
    5248        # default values for melting parameterization
     
    5652        return self
    5753    #}}}
    58 
    5954    def checkconsistency(self, md, solution, analyses):  # {{{
    6055        # Early return
     
    7772        return md
    7873    # }}}
    79 
    8074    def marshall(self, prefix, md, fid):  # {{{
    8175        yts = md.constants.yts
Note: See TracChangeset for help on using the changeset viewer.