Changeset 23657


Ignore:
Timestamp:
01/24/19 14:56:14 (6 years ago)
Author:
youngmc3
Message:

CHG: two different classes for frontalforcings

Location:
issm/trunk-jpl/src
Files:
1 added
10 edited

Legend:

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

    r23652 r23657  
    8484        /*Get frontal melt parameters*/
    8585        int melt_parameterization;
    86         iomodel->FindConstant(&melt_parameterization,"md.frontalforcings.melt_parameterization");
     86        iomodel->FindConstant(&melt_parameterization,"md.frontalforcings.parameterization");
    8787        switch(melt_parameterization){
    88                 case 0:
     88                case FrontalForcingsDefaultEnum:
    8989                        iomodel->FetchDataToInput(elements,"md.frontalforcings.meltingrate",CalvingMeltingrateEnum);
    9090                        break;
    91                 case 1:
     91                case FrontalForcingsRignotEnum:
    9292                        iomodel->FetchDataToInput(elements,"md.frontalforcings.basin",FrontalForcingsBasinIdEnum);
    9393                        iomodel->FetchDataToInput(elements,"md.frontalforcings.subglacial_discharge",FrontalForcingsSubglacialDischargeEnum);
    9494                        iomodel->FetchDataToInput(elements,"md.frontalforcings.thermalforcing",FrontalForcingsThermalForcingEnum);
    95                 break;
     95                        break;
    9696                default:
    97                         _error_("Frontal forcing model not supported yet");
     97                        _error_("Frontal forcings"<<EnumToStringx(melt_parameterization)<<" not supported yet");
    9898        }
    9999}
     
    103103        parameters->AddObject(iomodel->CopyConstantObject("md.levelset.reinit_frequency",LevelsetReinitFrequencyEnum));
    104104        parameters->AddObject(iomodel->CopyConstantObject("md.levelset.calving_max",CalvingMaxEnum));
    105         parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.melt_parameterization",FrontalForcingsParamEnum));
    106105       
    107106        int  calvinglaw;
     
    129128        /*Get frontal melt parameters*/
    130129        int melt_parameterization;
    131         iomodel->FindConstant(&melt_parameterization,"md.frontalforcings.melt_parameterization");
    132         if(melt_parameterization==1){
    133                 parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.numberofbasins",FrontalForcingsNumberofBasinsEnum));
    134         }
    135         return;
     130        iomodel->FindConstant(&melt_parameterization,"md.frontalforcings.parameterization");
     131        switch(melt_parameterization){
     132                case FrontalForcingsDefaultEnum:
     133                        break;
     134                case FrontalForcingsRignotEnum:
     135                        parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.numberofbasins",FrontalForcingsNumberofBasinsEnum));
     136                        break;
     137                default:
     138                        _error_("Frontal forcings "<<EnumToStringx(melt_parameterization)<<" not supported yet");
     139        }
    136140}
    137141/*}}}*/
  • issm/trunk-jpl/src/c/classes/IoModel.cpp

    r23649 r23657  
    637637                                        if(strcmp(record_name,"md.basalforcings.model")==0) integer = IoCodeToEnumBasal(integer);
    638638                                        if(strcmp(record_name,"md.calving.law")==0) integer = IoCodeToEnumCalving(integer);
     639                                        if(strcmp(record_name,"md.frontalforcings.parameterization")==0) integer = IoCodeToEnumFrontalforcings(integer);
    639640                                        if(strcmp(record_name,"md.hydrology.model")==0) integer = IoCodeToEnumHydrology(integer);
    640641                                        if(strcmp(record_name,"md.materials.type")==0) integer = IoCodeToEnumMaterials(integer);
  • issm/trunk-jpl/src/c/modules/FrontalForcingsx/FrontalForcingsx.cpp

    r23652 r23657  
    1515        /*Calculate melting rate*/
    1616        switch(melt_parameterization){
    17                 case 0:
     17                case FrontalForcingsDefaultEnum:
    1818                        break;
    19                 case 1:
     19                case FrontalForcingsRignotEnum:
    2020                        femmodel->IcefrontAreax();
    2121                        femmodel->RignotMeltParameterizationx();
    2222                        break;
    2323                default:
    24                         _error_("Frontal forcings parameterization not supported yet");
     24                        _error_("Frontal forcings "<<EnumToStringx(melt_parameterization)<<" not supported yet");
    2525        }
    2626}
  • issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp

    r23647 r23657  
    6262        parameters->AddObject(iomodel->CopyConstantObject("md.inversion.type",InversionTypeEnum));
    6363        parameters->AddObject(iomodel->CopyConstantObject("md.calving.law",CalvingLawEnum));
     64        parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.parameterization",FrontalForcingsParamEnum));
    6465        parameters->AddObject(new IntParam(SealevelriseRunCountEnum,1)); 
    6566
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r23652 r23657  
    830830        FreeSurfaceBaseAnalysisEnum,
    831831        FreeSurfaceTopAnalysisEnum,
     832        FrontalForcingsDefaultEnum,
     833        FrontalForcingsRignotEnum,
    832834        FSApproximationEnum,
    833835        FsetEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r23652 r23657  
    834834                case FreeSurfaceBaseAnalysisEnum : return "FreeSurfaceBaseAnalysis";
    835835                case FreeSurfaceTopAnalysisEnum : return "FreeSurfaceTopAnalysis";
     836                case FrontalForcingsDefaultEnum : return "FrontalForcingsDefault";
     837                case FrontalForcingsRignotEnum : return "FrontalForcingsRignot";
    836838                case FSApproximationEnum : return "FSApproximation";
    837839                case FsetEnum : return "Fset";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r23652 r23657  
    852852              else if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum;
    853853              else if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum;
     854              else if (strcmp(name,"FrontalForcingsDefault")==0) return FrontalForcingsDefaultEnum;
     855              else if (strcmp(name,"FrontalForcingsRignot")==0) return FrontalForcingsRignotEnum;
    854856              else if (strcmp(name,"FSApproximation")==0) return FSApproximationEnum;
    855857              else if (strcmp(name,"Fset")==0) return FsetEnum;
     
    873875              else if (strcmp(name,"GroundedAreaScaled")==0) return GroundedAreaScaledEnum;
    874876              else if (strcmp(name,"GroundingOnly")==0) return GroundingOnlyEnum;
    875               else if (strcmp(name,"Gset")==0) return GsetEnum;
    876               else if (strcmp(name,"Gsl")==0) return GslEnum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"HOApproximation")==0) return HOApproximationEnum;
     880              if (strcmp(name,"Gset")==0) return GsetEnum;
     881              else if (strcmp(name,"Gsl")==0) return GslEnum;
     882              else if (strcmp(name,"HOApproximation")==0) return HOApproximationEnum;
    881883              else if (strcmp(name,"HOFSApproximation")==0) return HOFSApproximationEnum;
    882884              else if (strcmp(name,"Hook")==0) return HookEnum;
     
    996998              else if (strcmp(name,"Outputdefinition14")==0) return Outputdefinition14Enum;
    997999              else if (strcmp(name,"Outputdefinition15")==0) return Outputdefinition15Enum;
    998               else if (strcmp(name,"Outputdefinition16")==0) return Outputdefinition16Enum;
    999               else if (strcmp(name,"Outputdefinition17")==0) return Outputdefinition17Enum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"Outputdefinition18")==0) return Outputdefinition18Enum;
     1003              if (strcmp(name,"Outputdefinition16")==0) return Outputdefinition16Enum;
     1004              else if (strcmp(name,"Outputdefinition17")==0) return Outputdefinition17Enum;
     1005              else if (strcmp(name,"Outputdefinition18")==0) return Outputdefinition18Enum;
    10041006              else if (strcmp(name,"Outputdefinition19")==0) return Outputdefinition19Enum;
    10051007              else if (strcmp(name,"Outputdefinition20")==0) return Outputdefinition20Enum;
     
    11191121              else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
    11201122              else if (strcmp(name,"Scaled")==0) return ScaledEnum;
    1121               else if (strcmp(name,"SealevelAbsolute")==0) return SealevelAbsoluteEnum;
    1122               else if (strcmp(name,"SealevelEmotion")==0) return SealevelEmotionEnum;
    11231123         else stage=10;
    11241124   }
    11251125   if(stage==10){
    1126               if (strcmp(name,"SealevelInertiaTensorXZ")==0) return SealevelInertiaTensorXZEnum;
     1126              if (strcmp(name,"SealevelAbsolute")==0) return SealevelAbsoluteEnum;
     1127              else if (strcmp(name,"SealevelEmotion")==0) return SealevelEmotionEnum;
     1128              else if (strcmp(name,"SealevelInertiaTensorXZ")==0) return SealevelInertiaTensorXZEnum;
    11271129              else if (strcmp(name,"SealevelInertiaTensorYZ")==0) return SealevelInertiaTensorYZEnum;
    11281130              else if (strcmp(name,"SealevelInertiaTensorZZ")==0) return SealevelInertiaTensorZZEnum;
  • issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp

    r23540 r23657  
    212212        }
    213213}/*}}}*/
     214int IoCodeToEnumFrontalforcings(int enum_in){/*{{{*/
     215        switch(enum_in){
     216                case 1: return FrontalForcingsDefaultEnum;
     217                case 2: return FrontalForcingsRignotEnum;
     218                default: _error_("Marshalled Frontalforcings code \""<<enum_in<<"\" not supported yet");
     219        }
     220}/*}}}*/
    214221int IoCodeToEnumHydrology(int enum_in){/*{{{*/
    215222        switch(enum_in){
  • issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.h

    r21802 r23657  
    77int IoCodeToEnumBasal(int enum_in);
    88int IoCodeToEnumCalving(int enum_in);
     9int IoCodeToEnumFrontalforcings(int enum_in);
    910int IoCodeToEnumHydrology(int enum_in);
    1011int IoCodeToEnumMaterials(int enum_in);
  • issm/trunk-jpl/src/m/classes/frontalforcings.m

    r23652 r23657  
    77        properties (SetAccess=public)
    88                meltingrate   = NaN;
    9                 melt_parameterization =0;
    10                 basin= NaN;
    11                 numberofbasins=0;
    12                 subglacial_discharge= NaN;
    13                 thermalforcing=NaN;
    149        end
    1510        methods
     
    3833
    3934                        meltingrate   = NaN;
    40                         melt_parameterization =0;
    41                         basin=NaN;
    42                         numberofbasins=0;
    43                         subglacial_discharge=NaN;
    44                         thermalforcing=NaN;
    4535                end % }}}
    4636                function md = checkconsistency(self,md,solution,analyses) % {{{
    4737                        %Early return
    4838                        if (~strcmp(solution,'TransientSolution') | md.transient.ismovingfront==0), return; end
    49                        
    50                         md = checkfield(md,'fieldname','frontalforcings.melt_parameterization','numel',[1],'values',[0,1]);
    51                         if self.melt_parameterization==0,
    52                                 md = checkfield(md,'fieldname','frontalforcings.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
    53                         elseif self.melt_parameterization==1,
    54                                 md = checkfield(md,'fieldname','frontalforcings.basin','>',0,'nan',1,'Inf',1);
    55                                 md = checkfield(md,'fieldname','frontalforcings.numberofbasins','numel',[1]);
    56                                 md = checkfield(md,'fieldname','frontalforcings.subglacial_discharge','>=',0,'nan',1,'Inf',1,'timeseries',1);
    57                                 md = checkfield(md,'fieldname','frontalforcings.thermalforcing','nan',1,'Inf',1,'timeseries',1);
    58                         end
     39
     40                        md = checkfield(md,'fieldname','frontalforcings.meltingrate','NaN',1,'Inf',1,'timeseries',1,'>=',0);
    5941
    6042                end % }}}
    6143                function disp(self) % {{{
    6244                        disp(sprintf('   Frontalforcings parameters:'));
    63                         fielddisplay(self,'melt_parameterization','0: no, 1: Rignot melt parameterization (Rignot et al.,2016)');
    64                         if self.melt_parameterization==0,
    65                                 fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
    66                         elseif self.melt_parameterization==1,
    67                                 fielddisplay(self,'basin','basin ID for vertices');
    68                                 fielddisplay(self,'numberofbasins', 'number of basins');
    69                                 fielddisplay(self,'subglacial_discharge','sum of subglacial discharge for each basin [m/d]');
    70                                 fielddisplay(self,'thermalforcing','thermal forcing [∘C]');
    71                         end
     45                        fielddisplay(self,'meltingrate','melting rate at given location [m/a]');
    7246                end % }}}
    7347                function marshall(self,prefix,md,fid) % {{{
    7448                        yts=md.constants.yts;
    75                         WriteData(fid,prefix,'object',self,'fieldname','melt_parameterization','format','Integer');
    76                         switch self.melt_parameterization
    77                                 case 0
    78                                         WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
    79                                 case 1
    80                                         WriteData(fid,prefix,'object',self,'fieldname','basin','format','DoubleMat','mattype',1);
    81                                         WriteData(fid,prefix,'object',self,'fieldname','numberofbasins','format','Integer');
    82                                         WriteData(fid,prefix,'object',self,'fieldname','subglacial_discharge','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    83                                         WriteData(fid,prefix,'object',self,'fieldname','thermalforcing','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
    84                         end
     49                        WriteData(fid,prefix,'name','md.frontalforcings.parameterization','data',1,'format','Integer');
     50                        WriteData(fid,prefix,'object',self,'fieldname','meltingrate','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts,'scale',1./yts);
    8551                end % }}}
    8652        end
Note: See TracChangeset for help on using the changeset viewer.