Index: /issm/trunk/src/c/UpdateFromInputsx/UpdateFromInputsx.cpp
===================================================================
--- /issm/trunk/src/c/UpdateFromInputsx/UpdateFromInputsx.cpp	(revision 136)
+++ /issm/trunk/src/c/UpdateFromInputsx/UpdateFromInputsx.cpp	(revision 137)
@@ -25,10 +25,11 @@
 	elements->Configure(elements,loads, nodes, materials);
 	loads->Configure(elements, loads, nodes, materials);
+	nodes->Configure(elements, loads, nodes, materials);
 	
-	/*Update elements, loads and materials from inputs: */
+	/*Update elements, nodes, loads and materials from inputs: */
 	elements->UpdateFromInputs(inputs);
+	nodes->UpdateFromInputs(inputs);
 	loads->UpdateFromInputs(inputs);
 	materials->UpdateFromInputs(inputs);
-	nodes->UpdateFromInputs(inputs);
 
 	return noerr;
Index: /issm/trunk/src/c/objects/Icefront.cpp
===================================================================
--- /issm/trunk/src/c/objects/Icefront.cpp	(revision 136)
+++ /issm/trunk/src/c/objects/Icefront.cpp	(revision 137)
@@ -550,5 +550,46 @@
 #define __FUNCT__ "Icefront::UpdateFromInputs"
 void  Icefront::UpdateFromInputs(ParameterInputs* inputs){
-	
+
+	int i;
+	int doflist0[MAXDOFSPERNODE];
+	int doflist1[MAXDOFSPERNODE];
+	int doflist2[MAXDOFSPERNODE];
+	int doflist3[MAXDOFSPERNODE];
+	int numberofdofspernode;
+
+	/*element: */
+	double* h_param=NULL;
+	double* b_param=NULL;
+	
+	/*Get dof list: */
+	nodes[0]->GetDofList(&doflist0[0],&numberofdofspernode);
+	nodes[1]->GetDofList(&doflist1[0],&numberofdofspernode);
+	if(strcmp(type,"quad")){
+		nodes[2]->GetDofList(&doflist2[0],&numberofdofspernode);
+		nodes[3]->GetDofList(&doflist3[0],&numberofdofspernode);
+	}
+
+	/*Update internal data if inputs holds new values: */
+	h_param=ParameterInputsRecover(inputs,"thickness");
+	b_param=ParameterInputsRecover(inputs,"bed");
+
+	if(h_param){
+		h[0]=h_param[doflist0[0]];
+		h[1]=h_param[doflist1[0]];
+		if(strcmp(type,"quad")){
+			h[2]=h_param[doflist2[0]];
+			h[3]=h_param[doflist3[0]];
+		}
+	}
+	
+	if(b_param){
+		b[0]=b_param[doflist0[0]];
+		b[1]=b_param[doflist1[0]];
+		if(strcmp(type,"quad")){
+			b[2]=b_param[doflist2[0]];
+			b[3]=b_param[doflist3[0]];
+		}
+	}
+
 }
 
Index: /issm/trunk/src/c/objects/Node.cpp
===================================================================
--- /issm/trunk/src/c/objects/Node.cpp	(revision 136)
+++ /issm/trunk/src/c/objects/Node.cpp	(revision 137)
@@ -434,5 +434,23 @@
 void  Node::UpdateFromInputs(ParameterInputs* inputs){
 	
-	//throw ErrorException(__FUNCT__," not supported yet!");
+	int doflist[MAXDOFSPERNODE*3];
+	int numberofdofspernode;
+
+	/*element: */
+	double* x_param=NULL;
+	double* y_param=NULL;
+	double* z_param=NULL;
+
+	/*Get dof list: */
+	GetDofList(&doflist[0],&numberofdofspernode);
+
+	/*Update internal data if inputs holds new values: */
+	x_param=ParameterInputsRecover(inputs,"x");
+	y_param=ParameterInputsRecover(inputs,"y");
+	z_param=ParameterInputsRecover(inputs,"z");
+
+	if(x_param)x[0]=x_param[doflist[0]];
+	if(y_param)x[1]=y_param[doflist[0]];
+	if(y_param)x[2]=z_param[doflist[0]];
 
 }
Index: /issm/trunk/src/c/objects/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Penta.cpp	(revision 136)
+++ /issm/trunk/src/c/objects/Penta.cpp	(revision 137)
@@ -716,13 +716,17 @@
 	int numberofdofspernode;
 
-	double* thickness=NULL;
-	double* bed=NULL;
-	double* surface=NULL;
-	double* drag=NULL;
+	/*element: */
+	double* h_param=NULL;
+	double* s_param=NULL;
+	double* b_param=NULL;
+	double* k_param=NULL;
+	double* melting_param=NULL;
+	double* accumulation_param=NULL;
+	
+	/*material: */
 	double* temperature_average_param=NULL;
-	double* flow_law_param=NULL;
-	double temperature_average;
-	double B_average;
-
+	double  temperature_average;
+	double* B_param=NULL;
+	double  B_average;
 
 
@@ -731,35 +735,38 @@
 
 	/*Update internal data if inputs holds new values: */
-	thickness=ParameterInputsRecover(inputs,"thickness");
-	bed=ParameterInputsRecover(inputs,"bed");
-	surface=ParameterInputsRecover(inputs,"surface");
-	drag=ParameterInputsRecover(inputs,"drag");
-
-	for(i=0;i<5;i++){
-		if(thickness)h[i]=thickness[doflist[i*numberofdofspernode+0]];
-		if(bed)b[i]=bed[doflist[i*numberofdofspernode+0]];
-		if(surface)s[i]=surface[doflist[i*numberofdofspernode+0]];
-		if(drag)k[i]=drag[doflist[i*numberofdofspernode+0]];
+	h_param=ParameterInputsRecover(inputs,"thickness");
+	s_param=ParameterInputsRecover(inputs,"surface");
+	b_param=ParameterInputsRecover(inputs,"bed");
+	k_param=ParameterInputsRecover(inputs,"drag");
+	melting_param=ParameterInputsRecover(inputs,"melting");
+	accumulation_param=ParameterInputsRecover(inputs,"accumulation");
+
+	for(i=0;i<6;i++){
+		if(h_param)h[i]=h_param[doflist[i*numberofdofspernode+0]];
+		if(s_param)s[i]=s_param[doflist[i*numberofdofspernode+0]];
+		if(b_param)b[i]=b_param[doflist[i*numberofdofspernode+0]];
+		if(k_param)k[i]=k_param[doflist[i*numberofdofspernode+0]];
+		if(melting_param)melting[i]=melting_param[doflist[i*numberofdofspernode+0]];
+		if(accumulation_param)accumulation[i]=accumulation_param[doflist[i*numberofdofspernode+0]];
 	}
 
 	//Update material if necessary
 	temperature_average_param=ParameterInputsRecover(inputs,"temperature_average");
-	flow_law_param=ParameterInputsRecover(inputs,"B");
+	B_param=ParameterInputsRecover(inputs,"B");
 	if(temperature_average_param){
-		for(i=0;i<3;i++) temperature_average+=temperature_average_param[doflist[i*numberofdofspernode+0]];
-		temperature_average=temperature_average/3.0;
+		for(i=0;i<6;i++) temperature_average+=temperature_average_param[doflist[i*numberofdofspernode+0]];
+		temperature_average=temperature_average/6.0;
 		B_average=Paterson(temperature_average);
 		matice->SetB(B_average);
 	}
 
-	//Update material if B is provided.
-	if(flow_law_param){
-		for(i=0;i<3;i++) B_average+=flow_law_param[doflist[i*numberofdofspernode+0]];
-		B_average=B_average/3.0;
+	if(B_param){
+		for(i=0;i<6;i++) B_average+=B_param[doflist[i*numberofdofspernode+0]];
+		B_average=B_average/6.0;
 		matice->SetB(B_average);
 	}
 
 }
-		
+
 Matpar* Penta::GetMatPar(){
 	return matpar;
Index: /issm/trunk/src/c/objects/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Tria.cpp	(revision 136)
+++ /issm/trunk/src/c/objects/Tria.cpp	(revision 137)
@@ -883,13 +883,17 @@
 	int numberofdofspernode;
 
-	double* thickness=NULL;
-	double* bed=NULL;
-	double* surface=NULL;
-	double* drag=NULL;
+	/*element: */
+	double* h_param=NULL;
+	double* s_param=NULL;
+	double* b_param=NULL;
+	double* k_param=NULL;
+	double* melting_param=NULL;
+	double* accumulation_param=NULL;
+	
+	/*material: */
 	double* temperature_average_param=NULL;
-	double* flow_law_param=NULL;
-	double temperature_average;
-	double B_average;
-
+	double  temperature_average;
+	double* B_param=NULL;
+	double  B_average;
 
 
@@ -898,19 +902,23 @@
 
 	/*Update internal data if inputs holds new values: */
-	thickness=ParameterInputsRecover(inputs,"thickness");
-	bed=ParameterInputsRecover(inputs,"bed");
-	surface=ParameterInputsRecover(inputs,"surface");
-	drag=ParameterInputsRecover(inputs,"drag");
+	h_param=ParameterInputsRecover(inputs,"thickness");
+	s_param=ParameterInputsRecover(inputs,"surface");
+	b_param=ParameterInputsRecover(inputs,"bed");
+	k_param=ParameterInputsRecover(inputs,"drag");
+	melting_param=ParameterInputsRecover(inputs,"melting");
+	accumulation_param=ParameterInputsRecover(inputs,"accumulation");
 
 	for(i=0;i<3;i++){
-		if(thickness)h[i]=thickness[doflist[i*numberofdofspernode+0]];
-		if(bed)b[i]=bed[doflist[i*numberofdofspernode+0]];
-		if(surface)s[i]=surface[doflist[i*numberofdofspernode+0]];
-		if(drag)k[i]=drag[doflist[i*numberofdofspernode+0]];
+		if(h_param)h[i]=h_param[doflist[i*numberofdofspernode+0]];
+		if(s_param)s[i]=s_param[doflist[i*numberofdofspernode+0]];
+		if(b_param)b[i]=b_param[doflist[i*numberofdofspernode+0]];
+		if(k_param)k[i]=k_param[doflist[i*numberofdofspernode+0]];
+		if(melting_param)melting[i]=melting_param[doflist[i*numberofdofspernode+0]];
+		if(accumulation_param)accumulation[i]=accumulation_param[doflist[i*numberofdofspernode+0]];
 	}
 
 	//Update material if necessary
 	temperature_average_param=ParameterInputsRecover(inputs,"temperature_average");
-	flow_law_param=ParameterInputsRecover(inputs,"B");
+	B_param=ParameterInputsRecover(inputs,"B");
 	if(temperature_average_param){
 		for(i=0;i<3;i++) temperature_average+=temperature_average_param[doflist[i*numberofdofspernode+0]];
@@ -920,7 +928,6 @@
 	}
 
-	//Update material if B is provided.
-	if(flow_law_param){
-		for(i=0;i<3;i++) B_average+=flow_law_param[doflist[i*numberofdofspernode+0]];
+	if(B_param){
+		for(i=0;i<3;i++) B_average+=B_param[doflist[i*numberofdofspernode+0]];
 		B_average=B_average/3.0;
 		matice->SetB(B_average);
Index: /issm/trunk/src/m/solutions/cielo/control.m
===================================================================
--- /issm/trunk/src/m/solutions/cielo/control.m	(revision 136)
+++ /issm/trunk/src/m/solutions/cielo/control.m	(revision 137)
@@ -29,4 +29,7 @@
 		eval(['inputs.' m.parameters.control_type '=p_g;']);
 		inputs.fit=m.parameters.fit(n);
+
+		%Update inputs in datasets
+		[m.elements,m.nodes, loads,m.materials]=UpdateFromInputs(m.elements,m.nodes, loads,m.materials,inputs);
 
 		disp('      computing gradJ...');
Index: /issm/trunk/src/m/solutions/cielo/diagnostic_core_linear.m
===================================================================
--- /issm/trunk/src/m/solutions/cielo/diagnostic_core_linear.m	(revision 136)
+++ /issm/trunk/src/m/solutions/cielo/diagnostic_core_linear.m	(revision 137)
@@ -7,4 +7,7 @@
 	%stiffness and load generation only:
 	m.parameters.kflag=1; m.parameters.pflag=1;
+
+	%Update inputs in datasets
+	[m.elements,m.nodes, m.loads,m.materials]=UpdateFromInputs(m.elements,m.nodes, m.loads,m.materials,inputs);
 
 	%system matrices
