Index: /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 25774)
+++ /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 25775)
@@ -97,4 +97,5 @@
 			break;
 		case MismipFloatingMeltRateEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum);
 			break;
 		case MantlePlumeGeothermalFluxEnum:
Index: /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 25774)
+++ /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 25775)
@@ -171,4 +171,5 @@
 			break;
 		case MismipFloatingMeltRateEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum);
 			break;
 		case MantlePlumeGeothermalFluxEnum:
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 25774)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp	(revision 25775)
@@ -801,4 +801,5 @@
 				break;
 			case MismipFloatingMeltRateEnum:
+				iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum);
 				break;
 			case MantlePlumeGeothermalFluxEnum:
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 25774)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 25775)
@@ -125,4 +125,5 @@
 			break;
 		case MismipFloatingMeltRateEnum:
+			iomodel->FetchDataToInput(inputs,elements,"md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum);
 			break;
 		case MantlePlumeGeothermalFluxEnum:
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 25774)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 25775)
@@ -2344,17 +2344,18 @@
 /*}}}*/
 void       Element::MismipFloatingiceMeltingRate(){/*{{{*/
+
+	IssmDouble thresholdthickness,upperdepthmelt;
+	IssmDouble base[MAXVERTICES];
+	IssmDouble bed[MAXVERTICES];
+	IssmDouble meltratefactor[MAXVERTICES];
+	IssmDouble values[MAXVERTICES];
+
 	const int NUM_VERTICES = this->GetNumberOfVertices();
 
-	IssmDouble  meltratefactor,thresholdthickness,upperdepthmelt;
-	IssmDouble* base     = xNew<IssmDouble>(NUM_VERTICES);
-	IssmDouble* bed      = xNew<IssmDouble>(NUM_VERTICES);
-	IssmDouble* values   = xNew<IssmDouble>(NUM_VERTICES);
-
-	parameters->FindParam(&meltratefactor,BasalforcingsMeltrateFactorEnum);
 	parameters->FindParam(&thresholdthickness,BasalforcingsThresholdThicknessEnum);
 	parameters->FindParam(&upperdepthmelt,BasalforcingsUpperdepthMeltEnum);
-
 	this->GetInputListOnVertices(base,BaseEnum);
 	this->GetInputListOnVertices(bed,BedEnum);
+	this->GetInputListOnVertices(meltratefactor,BasalforcingsMeltrateFactorEnum);
 	for(int i=0;i<NUM_VERTICES;i++){
 		if(base[i]>upperdepthmelt){
@@ -2362,12 +2363,9 @@
 		}
 		else{
-			values[i]=meltratefactor*tanh((base[i]-bed[i])/thresholdthickness)*(upperdepthmelt-base[i]);
+			values[i]=meltratefactor[i]*tanh((base[i]-bed[i])/thresholdthickness)*(upperdepthmelt-base[i]);
 		}
 	}
 
 	this->AddInput(BasalforcingsFloatingiceMeltingRateEnum,values,P1Enum);
-	xDelete<IssmDouble>(base);
-	xDelete<IssmDouble>(bed);
-	xDelete<IssmDouble>(values);
 
 }/*}}}*/
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 25774)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 25775)
@@ -201,5 +201,4 @@
 			break;
 		case MismipFloatingMeltRateEnum:
-			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.meltrate_factor",BasalforcingsMeltrateFactorEnum));
 			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.threshold_thickness",BasalforcingsThresholdThicknessEnum));
 			parameters->AddObject(iomodel->CopyConstantObject("md.basalforcings.upperdepth_melt",BasalforcingsUpperdepthMeltEnum));
Index: /issm/trunk-jpl/src/c/shared/Enum/Enum.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 25774)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 25775)
@@ -78,5 +78,4 @@
 syn keyword cConstant BasalforcingsLowercrustheatEnum
 syn keyword cConstant BasalforcingsMantleconductivityEnum
-syn keyword cConstant BasalforcingsMeltrateFactorEnum
 syn keyword cConstant BasalforcingsNusseltEnum
 syn keyword cConstant BasalforcingsPicoAverageOverturningEnum
@@ -516,4 +515,5 @@
 syn keyword cConstant BasalforcingsIsmip6TfShelfEnum
 syn keyword cConstant BasalforcingsIsmip6MeltAnomalyEnum
+syn keyword cConstant BasalforcingsMeltrateFactorEnum
 syn keyword cConstant BasalforcingsOceanSalinityEnum
 syn keyword cConstant BasalforcingsOceanTempEnum
@@ -1392,5 +1392,4 @@
 syn keyword cType Cfsurfacesquare
 syn keyword cType Channel
-syn keyword cType classes
 syn keyword cType Constraint
 syn keyword cType Constraints
@@ -1399,6 +1398,6 @@
 syn keyword cType ControlInput
 syn keyword cType Covertree
+syn keyword cType DataSetParam
 syn keyword cType DatasetInput
-syn keyword cType DataSetParam
 syn keyword cType Definition
 syn keyword cType DependentObject
@@ -1413,6 +1412,6 @@
 syn keyword cType ElementInput
 syn keyword cType ElementMatrix
+syn keyword cType ElementVector
 syn keyword cType Elements
-syn keyword cType ElementVector
 syn keyword cType ExponentialVariogram
 syn keyword cType ExternalResult
@@ -1421,10 +1420,9 @@
 syn keyword cType Friction
 syn keyword cType Gauss
-syn keyword cType GaussianVariogram
-syn keyword cType gaussobjects
 syn keyword cType GaussPenta
 syn keyword cType GaussSeg
 syn keyword cType GaussTetra
 syn keyword cType GaussTria
+syn keyword cType GaussianVariogram
 syn keyword cType GenericExternalResult
 syn keyword cType GenericOption
@@ -1441,5 +1439,4 @@
 syn keyword cType IssmDirectApplicInterface
 syn keyword cType IssmParallelDirectApplicInterface
-syn keyword cType krigingobjects
 syn keyword cType Load
 syn keyword cType Loads
@@ -1452,5 +1449,4 @@
 syn keyword cType Matice
 syn keyword cType Matlitho
-syn keyword cType matrixobjects
 syn keyword cType MatrixParam
 syn keyword cType Misfit
@@ -1465,6 +1461,6 @@
 syn keyword cType Observations
 syn keyword cType Option
+syn keyword cType OptionUtilities
 syn keyword cType Options
-syn keyword cType OptionUtilities
 syn keyword cType Param
 syn keyword cType Parameters
@@ -1480,11 +1476,11 @@
 syn keyword cType Regionaloutput
 syn keyword cType Results
+syn keyword cType RiftStruct
 syn keyword cType Riftfront
-syn keyword cType RiftStruct
 syn keyword cType SealevelMasks
 syn keyword cType Seg
 syn keyword cType SegInput
+syn keyword cType SegRef
 syn keyword cType Segment
-syn keyword cType SegRef
 syn keyword cType SpcDynamic
 syn keyword cType SpcStatic
@@ -1505,4 +1501,8 @@
 syn keyword cType Vertex
 syn keyword cType Vertices
+syn keyword cType classes
+syn keyword cType gaussobjects
+syn keyword cType krigingobjects
+syn keyword cType matrixobjects
 syn keyword cType AdjointBalancethickness2Analysis
 syn keyword cType AdjointBalancethicknessAnalysis
@@ -1523,6 +1523,6 @@
 syn keyword cType FreeSurfaceBaseAnalysis
 syn keyword cType FreeSurfaceTopAnalysis
+syn keyword cType GLheightadvectionAnalysis
 syn keyword cType GiaAnalysis
-syn keyword cType GLheightadvectionAnalysis
 syn keyword cType HydrologyDCEfficientAnalysis
 syn keyword cType HydrologyDCInefficientAnalysis
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 25774)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 25775)
@@ -72,5 +72,4 @@
 	BasalforcingsLowercrustheatEnum,
 	BasalforcingsMantleconductivityEnum,
-	BasalforcingsMeltrateFactorEnum,
 	BasalforcingsNusseltEnum,
 	BasalforcingsPicoAverageOverturningEnum,
@@ -512,4 +511,5 @@
 	BasalforcingsIsmip6TfShelfEnum,
 	BasalforcingsIsmip6MeltAnomalyEnum,
+	BasalforcingsMeltrateFactorEnum,
 	BasalforcingsOceanSalinityEnum,
 	BasalforcingsOceanTempEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 25774)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 25775)
@@ -80,5 +80,4 @@
 		case BasalforcingsLowercrustheatEnum : return "BasalforcingsLowercrustheat";
 		case BasalforcingsMantleconductivityEnum : return "BasalforcingsMantleconductivity";
-		case BasalforcingsMeltrateFactorEnum : return "BasalforcingsMeltrateFactor";
 		case BasalforcingsNusseltEnum : return "BasalforcingsNusselt";
 		case BasalforcingsPicoAverageOverturningEnum : return "BasalforcingsPicoAverageOverturning";
@@ -518,4 +517,5 @@
 		case BasalforcingsIsmip6TfShelfEnum : return "BasalforcingsIsmip6TfShelf";
 		case BasalforcingsIsmip6MeltAnomalyEnum : return "BasalforcingsIsmip6MeltAnomaly";
+		case BasalforcingsMeltrateFactorEnum : return "BasalforcingsMeltrateFactor";
 		case BasalforcingsOceanSalinityEnum : return "BasalforcingsOceanSalinity";
 		case BasalforcingsOceanTempEnum : return "BasalforcingsOceanTemp";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 25774)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 25775)
@@ -80,5 +80,4 @@
 	      else if (strcmp(name,"BasalforcingsLowercrustheat")==0) return BasalforcingsLowercrustheatEnum;
 	      else if (strcmp(name,"BasalforcingsMantleconductivity")==0) return BasalforcingsMantleconductivityEnum;
-	      else if (strcmp(name,"BasalforcingsMeltrateFactor")==0) return BasalforcingsMeltrateFactorEnum;
 	      else if (strcmp(name,"BasalforcingsNusselt")==0) return BasalforcingsNusseltEnum;
 	      else if (strcmp(name,"BasalforcingsPicoAverageOverturning")==0) return BasalforcingsPicoAverageOverturningEnum;
@@ -137,9 +136,9 @@
 	      else if (strcmp(name,"DebugProfiling")==0) return DebugProfilingEnum;
 	      else if (strcmp(name,"DomainDimension")==0) return DomainDimensionEnum;
+	      else if (strcmp(name,"DomainType")==0) return DomainTypeEnum;
          else stage=2;
    }
    if(stage==2){
-	      if (strcmp(name,"DomainType")==0) return DomainTypeEnum;
-	      else if (strcmp(name,"DslModel")==0) return DslModelEnum;
+	      if (strcmp(name,"DslModel")==0) return DslModelEnum;
 	      else if (strcmp(name,"DslModelid")==0) return DslModelidEnum;
 	      else if (strcmp(name,"DslNummodels")==0) return DslNummodelsEnum;
@@ -260,9 +259,9 @@
 	      else if (strcmp(name,"LoveMu0")==0) return LoveMu0Enum;
 	      else if (strcmp(name,"LoveNfreq")==0) return LoveNfreqEnum;
+	      else if (strcmp(name,"LoveR0")==0) return LoveR0Enum;
          else stage=3;
    }
    if(stage==3){
-	      if (strcmp(name,"LoveR0")==0) return LoveR0Enum;
-	      else if (strcmp(name,"LoveShNmax")==0) return LoveShNmaxEnum;
+	      if (strcmp(name,"LoveShNmax")==0) return LoveShNmaxEnum;
 	      else if (strcmp(name,"LoveShNmin")==0) return LoveShNminEnum;
 	      else if (strcmp(name,"MassFluxSegments")==0) return MassFluxSegmentsEnum;
@@ -383,9 +382,9 @@
 	      else if (strcmp(name,"SettingsWaitonlock")==0) return SettingsWaitonlockEnum;
 	      else if (strcmp(name,"SmbAIce")==0) return SmbAIceEnum;
+	      else if (strcmp(name,"SmbAIdx")==0) return SmbAIdxEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"SmbAIdx")==0) return SmbAIdxEnum;
-	      else if (strcmp(name,"SmbASnow")==0) return SmbASnowEnum;
+	      if (strcmp(name,"SmbASnow")==0) return SmbASnowEnum;
 	      else if (strcmp(name,"SmbAccualti")==0) return SmbAccualtiEnum;
 	      else if (strcmp(name,"SmbAccugrad")==0) return SmbAccugradEnum;
@@ -506,9 +505,9 @@
 	      else if (strcmp(name,"ParametersEND")==0) return ParametersENDEnum;
 	      else if (strcmp(name,"InputsSTART")==0) return InputsSTARTEnum;
+	      else if (strcmp(name,"Adjoint")==0) return AdjointEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"Adjoint")==0) return AdjointEnum;
-	      else if (strcmp(name,"Adjointp")==0) return AdjointpEnum;
+	      if (strcmp(name,"Adjointp")==0) return AdjointpEnum;
 	      else if (strcmp(name,"Adjointx")==0) return AdjointxEnum;
 	      else if (strcmp(name,"Adjointy")==0) return AdjointyEnum;
@@ -530,4 +529,5 @@
 	      else if (strcmp(name,"BasalforcingsIsmip6TfShelf")==0) return BasalforcingsIsmip6TfShelfEnum;
 	      else if (strcmp(name,"BasalforcingsIsmip6MeltAnomaly")==0) return BasalforcingsIsmip6MeltAnomalyEnum;
+	      else if (strcmp(name,"BasalforcingsMeltrateFactor")==0) return BasalforcingsMeltrateFactorEnum;
 	      else if (strcmp(name,"BasalforcingsOceanSalinity")==0) return BasalforcingsOceanSalinityEnum;
 	      else if (strcmp(name,"BasalforcingsOceanTemp")==0) return BasalforcingsOceanTempEnum;
Index: /issm/trunk-jpl/src/m/classes/mismipbasalforcings.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/mismipbasalforcings.m	(revision 25774)
+++ /issm/trunk-jpl/src/m/classes/mismipbasalforcings.m	(revision 25775)
@@ -8,6 +8,6 @@
 		groundedice_melting_rate  = NaN;
 		meltrate_factor           = NaN;
-		threshold_thickness       = NaN;
-		upperdepth_melt           = NaN;
+		threshold_thickness       = 0.;
+		upperdepth_melt           = 0.;
 		geothermalflux            = NaN;
 	end
@@ -47,5 +47,5 @@
 			if ismember('MasstransportAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.ismasstransport==0),
 				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
-				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'universal',1,'NaN',1,'Inf',1);
 				md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1);
 				md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1);
@@ -53,5 +53,5 @@
 			if ismember('BalancethicknessAnalysis',analyses),
 				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'size',[md.mesh.numberofvertices 1]);
-				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'universal',1,'NaN',1,'Inf',1);
 				md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1);
 				md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1);
@@ -59,5 +59,5 @@
 			if ismember('ThermalAnalysis',analyses) & ~(strcmp(solution,'TransientSolution') & md.transient.isthermal==0),
 				md = checkfield(md,'fieldname','basalforcings.groundedice_melting_rate','NaN',1,'Inf',1,'timeseries',1);
-				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','basalforcings.meltrate_factor','>=',0,'universal',1,'NaN',1,'Inf',1);
 				md = checkfield(md,'fieldname','basalforcings.threshold_thickness','>=',0,'numel',1);
 				md = checkfield(md,'fieldname','basalforcings.upperdepth_melt','<=',0,'numel',1);
@@ -88,5 +88,5 @@
 			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)
 			WriteData(fid,prefix,'object',self,'fieldname','geothermalflux','name','md.basalforcings.geothermalflux','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1,'yts',md.constants.yts);
-			WriteData(fid,prefix,'object',self,'fieldname','meltrate_factor','format','Double','scale',1./yts)
+			WriteData(fid,prefix,'object',self,'fieldname','meltrate_factor','format','DoubleMat','mattype',1,'scale',1./yts)
 			WriteData(fid,prefix,'object',self,'fieldname','threshold_thickness','format','Double')
 			WriteData(fid,prefix,'object',self,'fieldname','upperdepth_melt','format','Double')
Index: /issm/trunk-jpl/src/m/classes/mismipbasalforcings.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/mismipbasalforcings.py	(revision 25774)
+++ /issm/trunk-jpl/src/m/classes/mismipbasalforcings.py	(revision 25775)
@@ -16,11 +16,10 @@
     def __init__(self):  # {{{
         self.groundedice_melting_rate = np.nan
-        self.meltrate_factor = np.nan
-        self.threshold_thickness = np.nan
-        self.upperdepth_melt = np.nan
-        self.geothermalflux = np.nan
+        self.meltrate_factor          = np.nan
+        self.threshold_thickness      = 0.
+        self.upperdepth_melt          = 0.
+        self.geothermalflux           = np.nan
         self.setdefaultparameters()
     #}}}
-
     def __repr__(self):  # {{{
         s = '   MISMIP + basal melt parameterization\n'
@@ -32,5 +31,4 @@
         return s
     #}}}
-
     def extrude(self, md):  # {{{
         self.groundedice_melting_rate = project3d(md, 'vector', self.groundedice_melting_rate, 'type', 'node', 'layer', 1)
@@ -38,5 +36,4 @@
         return self
     #}}}
-
     def initialize(self, md):  # {{{
         if np.all(np.isnan(self.groundedice_melting_rate)):
@@ -48,5 +45,4 @@
         return self
     #}}}
-
     def setdefaultparameters(self):  # {{{
         # default values for melting parameterization
@@ -56,5 +52,4 @@
         return self
     #}}}
-
     def checkconsistency(self, md, solution, analyses):  # {{{
         # Early return
@@ -77,5 +72,4 @@
         return md
     # }}}
-
     def marshall(self, prefix, md, fid):  # {{{
         yts = md.constants.yts
