Index: /issm/trunk/src/c/modules/InputUpdateFromSolutionx/UpdateInputsFromSolutionx.cpp
===================================================================
--- /issm/trunk/src/c/modules/InputUpdateFromSolutionx/UpdateInputsFromSolutionx.cpp	(revision 4083)
+++ /issm/trunk/src/c/modules/InputUpdateFromSolutionx/UpdateInputsFromSolutionx.cpp	(revision 4083)
@@ -0,0 +1,45 @@
+/*!\file UpdateInputsFromSolutionx
+ * \brief: update datasets using  parameter inputs
+ */
+
+#include "./UpdateInputsFromSolutionx.h"
+#include "../../shared/shared.h"
+#include "../../include/include.h"
+#include "../../toolkits/toolkits.h"
+#include "../../EnumDefinitions/EnumDefinitions.h"
+
+void UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,Vec solution){
+
+	double* serial_solution=NULL;
+
+	/*Serialize solution, so that elements can index into it on every CPU: */
+	VecToMPISerial(&serial_solution,solution);
+
+	/*Call overloaded form of UpdateInputsFromSolutionx: */
+	UpdateInputsFromSolutionx( elements, nodes,  vertices,  loads,  materials,  parameters,serial_solution);
+
+	/*Free ressources:*/
+	xfree((void**)&serial_solution);
+
+}
+
+
+void UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,double* solution){
+
+	/*Intermediary*/
+	int i;
+	Element* element=NULL;
+
+	/*First, get elements and loads configured: */
+	elements->  Configure(elements,loads, nodes,vertices, materials,parameters);
+	loads->     Configure(elements,loads, nodes,vertices, materials,parameters);
+	nodes->     Configure(elements,loads, nodes,vertices, materials,parameters);
+	parameters->Configure(elements,loads, nodes,vertices, materials,parameters);
+	
+	/*Elements drive the update: */
+	for (i=0;i<elements->Size();i++){
+		element=(Element*)elements->GetObjectByOffset(i);
+		element->UpdateInputsFromSolution(solution);
+	}
+
+}
Index: /issm/trunk/src/c/modules/InputUpdateFromSolutionx/UpdateInputsFromSolutionx.h
===================================================================
--- /issm/trunk/src/c/modules/InputUpdateFromSolutionx/UpdateInputsFromSolutionx.h	(revision 4083)
+++ /issm/trunk/src/c/modules/InputUpdateFromSolutionx/UpdateInputsFromSolutionx.h	(revision 4083)
@@ -0,0 +1,20 @@
+/*!\file:  UpdateInputsFromSolutionx.h
+ * \brief header file for updating datasets from inputs
+ */ 
+
+#ifndef _UPDATEINPUTSFROMSOLUTIONXX_H
+#define _UPDATEINPUTSFROMSOLUTIONXX_H
+
+#include "../../objects/objects.h"
+#include "../../DataSet/DataSet.h"
+
+/* local prototypes: */
+void		UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,  Parameters* parameters,Vec solution);
+void        UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,double* solution);
+
+//with timestep
+void		UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices,DataSet* loads, DataSet* materials,  Parameters* parameters,Vec solution,int timestep);
+void        UpdateInputsFromSolutionx( DataSet* elements,DataSet* nodes, DataSet* vertices, DataSet* loads, DataSet* materials, Parameters* parameters,double* solution, int timestep);
+
+#endif  /* _UPDATEINPUTSFROMSOLUTIONXX_H */
+
