Index: /issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp
===================================================================
--- /issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp	(revision 4469)
+++ /issm/trunk/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp	(revision 4470)
@@ -42,4 +42,5 @@
 	IoModelFetchData(&iomodel->vx,NULL,NULL,iomodel_handle,"vx");
 	IoModelFetchData(&iomodel->vy,NULL,NULL,iomodel_handle,"vy");
+	IoModelFetchData(&iomodel->vz,NULL,NULL,iomodel_handle,"vz");
 
 	/*Update elements: */
@@ -74,3 +75,4 @@
 	xfree((void**)&iomodel->vx);
 	xfree((void**)&iomodel->vy);
+	xfree((void**)&iomodel->vz);
 }
Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4469)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4470)
@@ -397,4 +397,10 @@
 	else if (analysis_type==BalancedvelocitiesAnalysisEnum){
 		InputUpdateFromSolutionBalancedvelocities( solution);
+	}
+	else if (analysis_type==ThermalAnalysisEnum){
+		InputUpdateFromSolutionThermal( solution);
+	}
+	else if (analysis_type==MeltingAnalysisEnum){
+		InputUpdateFromSolutionMelting( solution);
 	}
 	else{
@@ -2468,4 +2474,56 @@
 void  Penta::InputUpdateFromSolutionBalancedvelocities(double* solution){
 	ISSMERROR(" not supported yet!");
+}
+/*}}}*/
+/*FUNCTION Penta::InputUpdateFromSolutionThermal {{{1*/
+void  Penta::InputUpdateFromSolutionThermal(double* solution){
+
+	int i;
+
+	const int    numvertices=6;
+	const int    numdofpervertex=1;
+	const int    numdof=numdofpervertex*numvertices;
+
+	int          doflist[numdof];
+	double       values[numdof];
+
+	int          dummy;
+
+	/*Get dof list: */
+	GetDofList(&doflist[0],&dummy);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof;i++){
+		values[i]=solution[doflist[i]];
+	}
+
+	/*Add thickness as inputs to the tria element: */
+	this->inputs->AddInput(new PentaVertexInput(TemperatureEnum,values));
+}
+/*}}}*/
+/*FUNCTION Penta::InputUpdateFromSolutionMelting {{{1*/
+void  Penta::InputUpdateFromSolutionMelting(double* solution){
+
+	int i;
+
+	const int    numvertices=6;
+	const int    numdofpervertex=1;
+	const int    numdof=numdofpervertex*numvertices;
+
+	int          doflist[numdof];
+	double       values[numdof];
+
+	int          dummy;
+
+	/*Get dof list: */
+	GetDofList(&doflist[0],&dummy);
+
+	/*Use the dof list to index into the solution vector: */
+	for(i=0;i<numdof;i++){
+		values[i]=solution[doflist[i]];
+	}
+
+	/*Add thickness as inputs to the tria element: */
+	this->inputs->AddInput(new PentaVertexInput(MeltingRateEnum,values));
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Elements/Penta.h
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.h	(revision 4469)
+++ /issm/trunk/src/c/objects/Elements/Penta.h	(revision 4470)
@@ -181,4 +181,6 @@
 		void    InputUpdateFromSurfaceSlopeX( double* solutiong);
 		void    InputUpdateFromSurfaceSlopeY( double* solutiong);
+		void    InputUpdateFromSolutionThermal( double* solutiong);
+		void    InputUpdateFromSolutionMelting( double* solutiong);
 		bool	  IsInput(int name);
 		bool	  IsOnSurface(void);
Index: /issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp
===================================================================
--- /issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp	(revision 4469)
+++ /issm/trunk/src/c/solvers/solver_thermal_nonlinear.cpp	(revision 4470)
@@ -121,4 +121,7 @@
 	}
 
+	//add melting_offset to inputs:
+	InputUpdateFromConstantx( fem->elements,fem->nodes, fem->vertices, fem->loads, fem->materials, fem->parameters,melting_offset,MeltingOffsetEnum);
+
 	/*Free ressources: */
 	MatFree(&Kgg_nopenalty);
