Changeset 23657
- Timestamp:
- 01/24/19 14:56:14 (6 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 1 added
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
r23652 r23657 84 84 /*Get frontal melt parameters*/ 85 85 int melt_parameterization; 86 iomodel->FindConstant(&melt_parameterization,"md.frontalforcings. melt_parameterization");86 iomodel->FindConstant(&melt_parameterization,"md.frontalforcings.parameterization"); 87 87 switch(melt_parameterization){ 88 case 0:88 case FrontalForcingsDefaultEnum: 89 89 iomodel->FetchDataToInput(elements,"md.frontalforcings.meltingrate",CalvingMeltingrateEnum); 90 90 break; 91 case 1:91 case FrontalForcingsRignotEnum: 92 92 iomodel->FetchDataToInput(elements,"md.frontalforcings.basin",FrontalForcingsBasinIdEnum); 93 93 iomodel->FetchDataToInput(elements,"md.frontalforcings.subglacial_discharge",FrontalForcingsSubglacialDischargeEnum); 94 94 iomodel->FetchDataToInput(elements,"md.frontalforcings.thermalforcing",FrontalForcingsThermalForcingEnum); 95 break;95 break; 96 96 default: 97 _error_("Frontal forcing modelnot supported yet");97 _error_("Frontal forcings"<<EnumToStringx(melt_parameterization)<<" not supported yet"); 98 98 } 99 99 } … … 103 103 parameters->AddObject(iomodel->CopyConstantObject("md.levelset.reinit_frequency",LevelsetReinitFrequencyEnum)); 104 104 parameters->AddObject(iomodel->CopyConstantObject("md.levelset.calving_max",CalvingMaxEnum)); 105 parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.melt_parameterization",FrontalForcingsParamEnum));106 105 107 106 int calvinglaw; … … 129 128 /*Get frontal melt parameters*/ 130 129 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 } 136 140 } 137 141 /*}}}*/ -
issm/trunk-jpl/src/c/classes/IoModel.cpp
r23649 r23657 637 637 if(strcmp(record_name,"md.basalforcings.model")==0) integer = IoCodeToEnumBasal(integer); 638 638 if(strcmp(record_name,"md.calving.law")==0) integer = IoCodeToEnumCalving(integer); 639 if(strcmp(record_name,"md.frontalforcings.parameterization")==0) integer = IoCodeToEnumFrontalforcings(integer); 639 640 if(strcmp(record_name,"md.hydrology.model")==0) integer = IoCodeToEnumHydrology(integer); 640 641 if(strcmp(record_name,"md.materials.type")==0) integer = IoCodeToEnumMaterials(integer); -
issm/trunk-jpl/src/c/modules/FrontalForcingsx/FrontalForcingsx.cpp
r23652 r23657 15 15 /*Calculate melting rate*/ 16 16 switch(melt_parameterization){ 17 case 0:17 case FrontalForcingsDefaultEnum: 18 18 break; 19 case 1:19 case FrontalForcingsRignotEnum: 20 20 femmodel->IcefrontAreax(); 21 21 femmodel->RignotMeltParameterizationx(); 22 22 break; 23 23 default: 24 _error_("Frontal forcings parameterizationnot supported yet");24 _error_("Frontal forcings "<<EnumToStringx(melt_parameterization)<<" not supported yet"); 25 25 } 26 26 } -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
r23647 r23657 62 62 parameters->AddObject(iomodel->CopyConstantObject("md.inversion.type",InversionTypeEnum)); 63 63 parameters->AddObject(iomodel->CopyConstantObject("md.calving.law",CalvingLawEnum)); 64 parameters->AddObject(iomodel->CopyConstantObject("md.frontalforcings.parameterization",FrontalForcingsParamEnum)); 64 65 parameters->AddObject(new IntParam(SealevelriseRunCountEnum,1)); 65 66 -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r23652 r23657 830 830 FreeSurfaceBaseAnalysisEnum, 831 831 FreeSurfaceTopAnalysisEnum, 832 FrontalForcingsDefaultEnum, 833 FrontalForcingsRignotEnum, 832 834 FSApproximationEnum, 833 835 FsetEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r23652 r23657 834 834 case FreeSurfaceBaseAnalysisEnum : return "FreeSurfaceBaseAnalysis"; 835 835 case FreeSurfaceTopAnalysisEnum : return "FreeSurfaceTopAnalysis"; 836 case FrontalForcingsDefaultEnum : return "FrontalForcingsDefault"; 837 case FrontalForcingsRignotEnum : return "FrontalForcingsRignot"; 836 838 case FSApproximationEnum : return "FSApproximation"; 837 839 case FsetEnum : return "Fset"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r23652 r23657 852 852 else if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum; 853 853 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; 854 856 else if (strcmp(name,"FSApproximation")==0) return FSApproximationEnum; 855 857 else if (strcmp(name,"Fset")==0) return FsetEnum; … … 873 875 else if (strcmp(name,"GroundedAreaScaled")==0) return GroundedAreaScaledEnum; 874 876 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;877 877 else stage=8; 878 878 } 879 879 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; 881 883 else if (strcmp(name,"HOFSApproximation")==0) return HOFSApproximationEnum; 882 884 else if (strcmp(name,"Hook")==0) return HookEnum; … … 996 998 else if (strcmp(name,"Outputdefinition14")==0) return Outputdefinition14Enum; 997 999 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;1000 1000 else stage=9; 1001 1001 } 1002 1002 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; 1004 1006 else if (strcmp(name,"Outputdefinition19")==0) return Outputdefinition19Enum; 1005 1007 else if (strcmp(name,"Outputdefinition20")==0) return Outputdefinition20Enum; … … 1119 1121 else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum; 1120 1122 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;1123 1123 else stage=10; 1124 1124 } 1125 1125 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; 1127 1129 else if (strcmp(name,"SealevelInertiaTensorYZ")==0) return SealevelInertiaTensorYZEnum; 1128 1130 else if (strcmp(name,"SealevelInertiaTensorZZ")==0) return SealevelInertiaTensorZZEnum; -
issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp
r23540 r23657 212 212 } 213 213 }/*}}}*/ 214 int 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 }/*}}}*/ 214 221 int IoCodeToEnumHydrology(int enum_in){/*{{{*/ 215 222 switch(enum_in){ -
issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.h
r21802 r23657 7 7 int IoCodeToEnumBasal(int enum_in); 8 8 int IoCodeToEnumCalving(int enum_in); 9 int IoCodeToEnumFrontalforcings(int enum_in); 9 10 int IoCodeToEnumHydrology(int enum_in); 10 11 int IoCodeToEnumMaterials(int enum_in); -
issm/trunk-jpl/src/m/classes/frontalforcings.m
r23652 r23657 7 7 properties (SetAccess=public) 8 8 meltingrate = NaN; 9 melt_parameterization =0;10 basin= NaN;11 numberofbasins=0;12 subglacial_discharge= NaN;13 thermalforcing=NaN;14 9 end 15 10 methods … … 38 33 39 34 meltingrate = NaN; 40 melt_parameterization =0;41 basin=NaN;42 numberofbasins=0;43 subglacial_discharge=NaN;44 thermalforcing=NaN;45 35 end % }}} 46 36 function md = checkconsistency(self,md,solution,analyses) % {{{ 47 37 %Early return 48 38 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); 59 41 60 42 end % }}} 61 43 function disp(self) % {{{ 62 44 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]'); 72 46 end % }}} 73 47 function marshall(self,prefix,md,fid) % {{{ 74 48 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); 85 51 end % }}} 86 52 end
Note:
See TracChangeset
for help on using the changeset viewer.