Index: /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 23781)
+++ /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 23782)
@@ -178,4 +178,24 @@
 		case BasalforcingsPicoEnum:
 			iomodel->FetchDataToInput(elements,"md.basalforcings.basin_id",BasalforcingsPicoBasinIdEnum);
+			break;
+		case BasalforcingsIsmip6Enum:{
+			//iomodel->FetchDataToInput(elements,"md.basalforcings.tf",BasalforcingsIsmp6TfEnum);
+			IssmDouble** array3d = NULL;
+			int* Ms = NULL;
+			int* Ns = NULL;
+			int K;
+			iomodel->FetchData(&array3d,&Ms,&Ns,&K,"md.basalforcings.tf");
+			if(!array3d) _error_("md.basalforcings.tf not found in binary file");
+			for(int i=0;i<elements->Size();i++){
+				Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i));
+				for(int kk=0;kk<K;kk++){
+					element->DatasetInputAdd(BasalforcingsIsmp6TfEnum,array3d[kk],iomodel,Ms[kk],Ns[kk],1,BasalforcingsIsmp6TfEnum,7,BasalforcingsIsmp6TfEnum);
+				}
+			}
+			xDelete<int>(Ms);
+			xDelete<int>(Ns);
+			for(int i=0;i<K;i++) xDelete<IssmDouble>(array3d[i]);
+			xDelete<IssmDouble*>(array3d);
+			}
 			break;
 		default:
Index: /issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp	(revision 23781)
+++ /issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp	(revision 23782)
@@ -37,4 +37,8 @@
 			FloatingiceMeltingRatePicox(femmodel);
 			break;
+		case BasalforcingsIsmip6Enum:
+			if(VerboseSolution())_printf0_(" call ISMIP 6 Floating melting rate module\n");
+			FloatingiceMeltingRateIsmip6x(femmodel);
+			break;
 		default:
 			_error_("Basal forcing model "<<EnumToStringx(basalforcing_model)<<" not supported yet");
@@ -67,2 +71,14 @@
 }
 /*}}}*/
+void FloatingiceMeltingRateIsmip6x(FemModel* femmodel){/*{{{*/
+
+	for(int i=0;i<femmodel->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		Input* temp = element->GetInput(BasalforcingsIsmp6TfEnum);
+		_assert_(temp); 
+		temp->Echo();
+		_error_("not implemented yet");
+		//element->MismipFloatingiceMeltingRate();
+	}
+}
+/*}}}*/
Index: /issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.h
===================================================================
--- /issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.h	(revision 23781)
+++ /issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.h	(revision 23782)
@@ -14,4 +14,5 @@
 void SpatialLinearFloatingiceMeltingRatex(FemModel* femmodel);
 void MismipFloatingiceMeltingRatex(FemModel* femmodel);
+void FloatingiceMeltingRateIsmip6x(FemModel* femmodel);
 
 #endif  /* _FloatingiceMeltingRatex_H*/
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 23781)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 23782)
@@ -224,4 +224,8 @@
 				parameters->AddObject(new TransientArrayParam(BasalforcingsPicoFarOceansalinityEnum,transparam,&transparam[N*(M-1)],interp,N,M));
 				xDelete<IssmDouble>(transparam);
+		case BasalforcingsIsmip6Enum:
+				iomodel->FindConstant(&interp,"md.timestepping.interp_forcings");
+				printf("-------------- file: CreateParameters.cpp line: %i\n",__LINE__); 
+				printf("== WARNING: needs to be implemented\n");
 			break;
 		default:
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 23781)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 23782)
@@ -436,4 +436,5 @@
 	BasalforcingsGeothermalfluxEnum,
 	BasalforcingsGroundediceMeltingRateEnum,
+	BasalforcingsIsmp6TfEnum,
 	BasalforcingsPicoBasinIdEnum,
 	BasalforcingsPicoBoxIdEnum,
@@ -752,4 +753,5 @@
 	BalancevelocitySolutionEnum,
 	BasalCrevasseEnum,
+	BasalforcingsIsmip6Enum,
 	BasalforcingsPicoEnum,
 	BedSlopeSolutionEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 23781)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 23782)
@@ -442,4 +442,5 @@
 		case BasalforcingsGeothermalfluxEnum : return "BasalforcingsGeothermalflux";
 		case BasalforcingsGroundediceMeltingRateEnum : return "BasalforcingsGroundediceMeltingRate";
+		case BasalforcingsIsmp6TfEnum : return "BasalforcingsIsmp6Tf";
 		case BasalforcingsPicoBasinIdEnum : return "BasalforcingsPicoBasinId";
 		case BasalforcingsPicoBoxIdEnum : return "BasalforcingsPicoBoxId";
@@ -756,4 +757,5 @@
 		case BalancevelocitySolutionEnum : return "BalancevelocitySolution";
 		case BasalCrevasseEnum : return "BasalCrevasse";
+		case BasalforcingsIsmip6Enum : return "BasalforcingsIsmip6";
 		case BasalforcingsPicoEnum : return "BasalforcingsPico";
 		case BedSlopeSolutionEnum : return "BedSlopeSolution";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 23781)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 23782)
@@ -451,4 +451,5 @@
 	      else if (strcmp(name,"BasalforcingsGeothermalflux")==0) return BasalforcingsGeothermalfluxEnum;
 	      else if (strcmp(name,"BasalforcingsGroundediceMeltingRate")==0) return BasalforcingsGroundediceMeltingRateEnum;
+	      else if (strcmp(name,"BasalforcingsIsmp6Tf")==0) return BasalforcingsIsmp6TfEnum;
 	      else if (strcmp(name,"BasalforcingsPicoBasinId")==0) return BasalforcingsPicoBasinIdEnum;
 	      else if (strcmp(name,"BasalforcingsPicoBoxId")==0) return BasalforcingsPicoBoxIdEnum;
@@ -505,9 +506,9 @@
 	      else if (strcmp(name,"EsaYmotion")==0) return EsaYmotionEnum;
 	      else if (strcmp(name,"EtaDiff")==0) return EtaDiffEnum;
-	      else if (strcmp(name,"FrictionAs")==0) return FrictionAsEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"FrictionC")==0) return FrictionCEnum;
+	      if (strcmp(name,"FrictionAs")==0) return FrictionAsEnum;
+	      else if (strcmp(name,"FrictionC")==0) return FrictionCEnum;
 	      else if (strcmp(name,"FrictionCoefficientcoulomb")==0) return FrictionCoefficientcoulombEnum;
 	      else if (strcmp(name,"FrictionCoefficient")==0) return FrictionCoefficientEnum;
@@ -628,9 +629,9 @@
 	      else if (strcmp(name,"SmbDailyairhumidity")==0) return SmbDailyairhumidityEnum;
 	      else if (strcmp(name,"SmbDailytemperature")==0) return SmbDailytemperatureEnum;
-	      else if (strcmp(name,"SmbD")==0) return SmbDEnum;
          else stage=6;
    }
    if(stage==6){
-	      if (strcmp(name,"SmbDini")==0) return SmbDiniEnum;
+	      if (strcmp(name,"SmbD")==0) return SmbDEnum;
+	      else if (strcmp(name,"SmbDini")==0) return SmbDiniEnum;
 	      else if (strcmp(name,"SmbDlwrf")==0) return SmbDlwrfEnum;
 	      else if (strcmp(name,"SmbDswrf")==0) return SmbDswrfEnum;
@@ -751,9 +752,9 @@
 	      else if (strcmp(name,"AdaptiveTimestepping")==0) return AdaptiveTimesteppingEnum;
 	      else if (strcmp(name,"AdjointBalancethickness2Analysis")==0) return AdjointBalancethickness2AnalysisEnum;
-	      else if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum;
          else stage=7;
    }
    if(stage==7){
-	      if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum;
+	      if (strcmp(name,"AdjointBalancethicknessAnalysis")==0) return AdjointBalancethicknessAnalysisEnum;
+	      else if (strcmp(name,"AdjointHorizAnalysis")==0) return AdjointHorizAnalysisEnum;
 	      else if (strcmp(name,"Adjointp")==0) return AdjointpEnum;
 	      else if (strcmp(name,"AggressiveMigration")==0) return AggressiveMigrationEnum;
@@ -774,4 +775,5 @@
 	      else if (strcmp(name,"BalancevelocitySolution")==0) return BalancevelocitySolutionEnum;
 	      else if (strcmp(name,"BasalCrevasse")==0) return BasalCrevasseEnum;
+	      else if (strcmp(name,"BasalforcingsIsmip6")==0) return BasalforcingsIsmip6Enum;
 	      else if (strcmp(name,"BasalforcingsPico")==0) return BasalforcingsPicoEnum;
 	      else if (strcmp(name,"BedSlopeSolution")==0) return BedSlopeSolutionEnum;
@@ -873,10 +875,10 @@
 	      else if (strcmp(name,"Gradient1")==0) return Gradient1Enum;
 	      else if (strcmp(name,"Gradient2")==0) return Gradient2Enum;
-	      else if (strcmp(name,"Gradient3")==0) return Gradient3Enum;
-	      else if (strcmp(name,"GroundedArea")==0) return GroundedAreaEnum;
          else stage=8;
    }
    if(stage==8){
-	      if (strcmp(name,"GroundedAreaScaled")==0) return GroundedAreaScaledEnum;
+	      if (strcmp(name,"Gradient3")==0) return Gradient3Enum;
+	      else if (strcmp(name,"GroundedArea")==0) return GroundedAreaEnum;
+	      else if (strcmp(name,"GroundedAreaScaled")==0) return GroundedAreaScaledEnum;
 	      else if (strcmp(name,"GroundingOnly")==0) return GroundingOnlyEnum;
 	      else if (strcmp(name,"Gset")==0) return GsetEnum;
@@ -996,10 +998,10 @@
 	      else if (strcmp(name,"Outputdefinition10")==0) return Outputdefinition10Enum;
 	      else if (strcmp(name,"Outputdefinition11")==0) return Outputdefinition11Enum;
-	      else if (strcmp(name,"Outputdefinition12")==0) return Outputdefinition12Enum;
-	      else if (strcmp(name,"Outputdefinition13")==0) return Outputdefinition13Enum;
          else stage=9;
    }
    if(stage==9){
-	      if (strcmp(name,"Outputdefinition14")==0) return Outputdefinition14Enum;
+	      if (strcmp(name,"Outputdefinition12")==0) return Outputdefinition12Enum;
+	      else if (strcmp(name,"Outputdefinition13")==0) return Outputdefinition13Enum;
+	      else if (strcmp(name,"Outputdefinition14")==0) return Outputdefinition14Enum;
 	      else if (strcmp(name,"Outputdefinition15")==0) return Outputdefinition15Enum;
 	      else if (strcmp(name,"Outputdefinition16")==0) return Outputdefinition16Enum;
@@ -1119,10 +1121,10 @@
 	      else if (strcmp(name,"ProfilingCurrentMem")==0) return ProfilingCurrentMemEnum;
 	      else if (strcmp(name,"ProfilingSolutionTime")==0) return ProfilingSolutionTimeEnum;
-	      else if (strcmp(name,"Regionaloutput")==0) return RegionaloutputEnum;
-	      else if (strcmp(name,"Regular")==0) return RegularEnum;
          else stage=10;
    }
    if(stage==10){
-	      if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
+	      if (strcmp(name,"Regionaloutput")==0) return RegionaloutputEnum;
+	      else if (strcmp(name,"Regular")==0) return RegularEnum;
+	      else if (strcmp(name,"Riftfront")==0) return RiftfrontEnum;
 	      else if (strcmp(name,"Scaled")==0) return ScaledEnum;
 	      else if (strcmp(name,"SealevelAbsolute")==0) return SealevelAbsoluteEnum;
Index: /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp	(revision 23781)
+++ /issm/trunk-jpl/src/c/shared/io/Marshalling/IoCodeConversions.cpp	(revision 23782)
@@ -197,4 +197,5 @@
 		case 5: return BasalforcingsPicoEnum;
 		case 6: return SpatialLinearFloatingMeltRateEnum;
+		case 7: return BasalforcingsIsmip6Enum;
 		default: _error_("Marshalled Basal Forcings code \""<<enum_in<<"\" not supported yet");
 	}
