Index: /issm/branches/trunk-larour-SLPS2022/src/c/Makefile.am
===================================================================
--- /issm/branches/trunk-larour-SLPS2022/src/c/Makefile.am	(revision 27215)
+++ /issm/branches/trunk-larour-SLPS2022/src/c/Makefile.am	(revision 27216)
@@ -199,4 +199,5 @@
 	./toolkits/ToolkitOptions.cpp \
 	./modules/MmeToInputFromIdx/MmeToInputFromIdx.cpp\
+	./modules/MmeToInputx/MmeToInputx.cpp\
 	./modules/ModelProcessorx/ModelProcessorx.cpp \
 	./modules/ModelProcessorx/ElementsAndVerticesPartitioning.cpp \
Index: /issm/branches/trunk-larour-SLPS2022/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp
===================================================================
--- /issm/branches/trunk-larour-SLPS2022/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp	(revision 27215)
+++ /issm/branches/trunk-larour-SLPS2022/src/c/modules/InputUpdateFromDakotax/InputUpdateFromDakotax.cpp	(revision 27216)
@@ -190,61 +190,4 @@
 
 }	//}}}
-void  MmeToInputx(FemModel* femmodel,IssmDouble* distributed_values,IssmDouble* variable_partition,int npart,int rootenum, int interpolationenum){ /*{{{*/
-
-	TransientInput* transientinput  = NULL;
-	TransientInput* transientinput2 = NULL;
-	Tria* element                    = NULL;
-	IssmDouble value;
-	IssmDouble* values               = NULL;
-	IssmDouble* times                = NULL;
-	int N;
-	int id;
-
-	/*find thickness dataset: */
-	DatasetInput* datasetinput = femmodel->inputs->GetDatasetInput(rootenum);
-
-	/*Initialize new transient input: */
-	transientinput = datasetinput->GetTransientInputByOffset(0); _assert_(transientinput);
-	transientinput->GetAllTimes(&times,&N);
-	femmodel->inputs->SetTransientInput(DummyEnum,times,N);
-	transientinput2 = femmodel->inputs->GetTransientInput(DummyEnum); transientinput2->Configure(femmodel->parameters);
-
-	for(Object* & object : femmodel->elements->objects){
-		Tria*   element=xDynamicCast<Tria*>(object);
-
-		if((int)variable_partition[element->Sid()]==-1)id=0; //grab background field
-		else id=distributed_values[(int)variable_partition[element->Sid()]]-1; //grab partition field
-
-		/*recover the right field from the mme: */
-		transientinput = datasetinput->GetTransientInputByOffset(id); _assert_(transientinput);
-
-		/*copy values from the transientinput to the final transientinput2: */
-		for (int j=0;j<N;j++){
-			TriaInput* tria_input=transientinput->GetTriaInput(j);
-			element->InputServe(tria_input);
-			if(interpolationenum==P0Enum){
-				value=tria_input->element_values[0];
-				transientinput2->AddTriaTimeInput( j,1,&(element->lid),&value,P0Enum);
-			}
-			else if(interpolationenum==P1Enum){
-
-				/*Get values and lid list*/
-				const int   numvertices     = element->GetNumberOfVertices();
-				int        *vertexlids      = xNew<int>(numvertices);
-				int        *vertexsids      = xNew<int>(numvertices);
-
-				/*Recover vertices ids needed to initialize inputs*/
-				element->GetVerticesLidList(&vertexlids[0]);
-				element->GetVerticesSidList(&vertexsids[0]);
-				values=tria_input->element_values;
-				transientinput2->AddTriaTimeInput( j,numvertices,vertexlids,values,P1Enum);
-			}
-		}
-	}
-
-	/*wipe out existing SurfaceloadIceThicknessRateEnum dataset:*/
-	femmodel->inputs->ChangeEnum(DummyEnum,rootenum);
-
-}	//}}}
 void  InputScaleFromDakotax(FemModel* femmodel,IssmDouble* distributed_values,IssmDouble* partition, int npart, int nt, int name){ /*{{{*/
 
Index: /issm/branches/trunk-larour-SLPS2022/src/c/modules/MmeToInputx/MmeToInputx.cpp
===================================================================
--- /issm/branches/trunk-larour-SLPS2022/src/c/modules/MmeToInputx/MmeToInputx.cpp	(revision 27216)
+++ /issm/branches/trunk-larour-SLPS2022/src/c/modules/MmeToInputx/MmeToInputx.cpp	(revision 27216)
@@ -0,0 +1,64 @@
+/*!\file MmeToInputx
+ * \brief: 
+ */
+
+#include "./MmeToInputx.h"
+#include "../MmeToInputFromIdx/MmeToInputFromIdx.h"
+
+void  MmeToInputx(FemModel* femmodel,IssmDouble* distributed_values,IssmDouble* variable_partition,int npart,int rootenum, int interpolationenum){ 
+
+	TransientInput* transientinput  = NULL;
+	TransientInput* transientinput2 = NULL;
+	Tria* element                    = NULL;
+	IssmDouble value;
+	IssmDouble* values               = NULL;
+	IssmDouble* times                = NULL;
+	int N;
+	int id;
+
+	/*find thickness dataset: */
+	DatasetInput* datasetinput = femmodel->inputs->GetDatasetInput(rootenum);
+
+	/*Initialize new transient input: */
+	transientinput = datasetinput->GetTransientInputByOffset(0); _assert_(transientinput);
+	transientinput->GetAllTimes(&times,&N);
+	femmodel->inputs->SetTransientInput(DummyEnum,times,N);
+	transientinput2 = femmodel->inputs->GetTransientInput(DummyEnum); transientinput2->Configure(femmodel->parameters);
+
+	for(Object* & object : femmodel->elements->objects){
+		Tria*   element=xDynamicCast<Tria*>(object);
+
+		if((int)variable_partition[element->Sid()]==-1)id=0; //grab background field
+		else id=distributed_values[(int)variable_partition[element->Sid()]]-1; //grab partition field
+
+		/*recover the right field from the mme: */
+		transientinput = datasetinput->GetTransientInputByOffset(id); _assert_(transientinput);
+
+		/*copy values from the transientinput to the final transientinput2: */
+		for (int j=0;j<N;j++){
+			TriaInput* tria_input=transientinput->GetTriaInput(j);
+			element->InputServe(tria_input);
+			if(interpolationenum==P0Enum){
+				value=tria_input->element_values[0];
+				transientinput2->AddTriaTimeInput( j,1,&(element->lid),&value,P0Enum);
+			}
+			else if(interpolationenum==P1Enum){
+
+				/*Get values and lid list*/
+				const int   numvertices     = element->GetNumberOfVertices();
+				int        *vertexlids      = xNew<int>(numvertices);
+				int        *vertexsids      = xNew<int>(numvertices);
+
+				/*Recover vertices ids needed to initialize inputs*/
+				element->GetVerticesLidList(&vertexlids[0]);
+				element->GetVerticesSidList(&vertexsids[0]);
+				values=tria_input->element_values;
+				transientinput2->AddTriaTimeInput( j,numvertices,vertexlids,values,P1Enum);
+			}
+		}
+	}
+
+	/*wipe out existing SurfaceloadIceThicknessRateEnum dataset:*/
+	femmodel->inputs->ChangeEnum(DummyEnum,rootenum);
+
+}	
Index: /issm/branches/trunk-larour-SLPS2022/src/c/modules/MmeToInputx/MmeToInputx.h
===================================================================
--- /issm/branches/trunk-larour-SLPS2022/src/c/modules/MmeToInputx/MmeToInputx.h	(revision 27216)
+++ /issm/branches/trunk-larour-SLPS2022/src/c/modules/MmeToInputx/MmeToInputx.h	(revision 27216)
@@ -0,0 +1,12 @@
+/*!\file:  MmeToInputx.h
+ * \brief 
+ */ 
+
+#ifndef _MMETOINPUTX_H
+#define _MMETOINPUTX_H
+
+#include "../../classes/classes.h"
+
+void  MmeToInputx(FemModel* femmodel,IssmDouble* distributed_values,IssmDouble* variable_partition,int npart,int rootenum, int interpolationenum);
+
+#endif  /* _UPDATEMMESX_H */
Index: /issm/branches/trunk-larour-SLPS2022/src/c/modules/modules.h
===================================================================
--- /issm/branches/trunk-larour-SLPS2022/src/c/modules/modules.h	(revision 27215)
+++ /issm/branches/trunk-larour-SLPS2022/src/c/modules/modules.h	(revision 27216)
@@ -73,4 +73,5 @@
 #include "./ModelProcessorx/ModelProcessorx.h"
 #include "./MmeToInputFromIdx/MmeToInputFromIdx.h"
+#include "./MmeToInputx/MmeToInputx.h"
 #include "./ParseToolkitsOptionsx/ParseToolkitsOptionsx.h"
 #include "./NodalValuex/NodalValuex.h"
