Index: /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp	(revision 14970)
+++ /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.cpp	(revision 14971)
@@ -1881,5 +1881,4 @@
 void  Tria::InputUpdateFromVector(IssmDouble* vector, int name, int type){
 
-	
 	const int   numdof         = NDOF1 *NUMVERTICES;
 	int        *doflist        = NULL;
@@ -1890,4 +1889,9 @@
 
 	switch(type){
+	#ifdef _HAVE_GIA_
+	case GiaAnalysisEnum:
+		InputUpdateFromVectorGia(vector);
+		break;
+	#endif
 	case VertexEnum: 
 		/*Get values on the 3 vertices*/
@@ -1902,5 +1906,5 @@
 			this->inputs->AddInput(new TriaP1Input(name,values));
 		}
-		return;
+		return; 
 
 	case NodesEnum:
@@ -1915,4 +1919,5 @@
 		/*Add input to the element: */
 		this->inputs->AddInput(new TriaP1Input(name,values));
+		
 		/*Free ressources:*/
 		xDelete<int>(doflist);
@@ -1920,7 +1925,7 @@
 
 	default:
-	
-			_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
-	}
+		_error_("type " << type << " (" << EnumToStringx(type) << ") not implemented yet");
+	}
+
 }
 /*}}}*/
@@ -3235,4 +3240,24 @@
 	/*Add input to the element: */
 	this->inputs->AddInput(new TriaP1Input(GiaWEnum,values));
+
+}
+/*}}}*/
+/*FUNCTION Tria::InputUpdateFromVectorGia{{{*/
+void  Tria::InputUpdateFromVectorGia(IssmDouble* vector){
+
+	int vertexsidlist[NUMVERTICES];
+	IssmDouble    values[NUMVERTICES];
+
+	/*Get sid list: */
+	this->GetVertexSidList(&vertexsidlist[0]);
+
+	/*Use the dof list to index into the solution vector: */
+	for(int i=0;i<NUMVERTICES;i++){
+		values[i]=vector[vertexsidlist[i]];
+		if(xIsNan<IssmDouble>(values[i])) _error_("NaN found in solution vector");
+	}
+
+	/*Add input to the element: */
+	this->inputs->AddInput(new TriaP1Input(GiadWdtEnum,values));
 
 }
Index: /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.h	(revision 14970)
+++ /issm/trunk-jpl/src/c/classes/objects/Elements/Tria.h	(revision 14971)
@@ -142,5 +142,6 @@
 		#ifdef _HAVE_GIA_
 		void   GiaDeflection(Vector<IssmDouble>* wg,Vector<IssmDouble>* dwgdt,IssmDouble* x,IssmDouble* y);
-		void   InputUpdateFromSolutionGia(IssmDouble* solution);
+		void   InputUpdateFromSolutionGia(IssmDouble* solution); 
+		void   InputUpdateFromVectorGia(IssmDouble* vector); 
 		#endif
 
Index: /issm/trunk-jpl/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp	(revision 14970)
+++ /issm/trunk-jpl/src/c/modules/GiaDeflectionCorex/GiaDeflectionCorex.cpp	(revision 14971)
@@ -176,10 +176,8 @@
 	}
 	else if (irate==1){
+		*pwi=0;
 		dwidt = blocks_.aswokm;
 		*pdwidt=dwidt;
-		*pwi=0;
 	}
 
-	//printf("deflection: %g deflection rate %g\n",wi, dwidt);
-
 }
Index: /issm/trunk-jpl/src/c/solutions/AnalysisConfiguration.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/AnalysisConfiguration.cpp	(revision 14970)
+++ /issm/trunk-jpl/src/c/solutions/AnalysisConfiguration.cpp	(revision 14971)
@@ -120,5 +120,4 @@
 			analyses[7]=EnthalpyAnalysisEnum;
 			analyses[8]=PrognosticAnalysisEnum;
-			//analyses[9]=GiaAnalysisEnum;
 			break;
 
Index: /issm/trunk-jpl/src/c/solutions/gia_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/solutions/gia_core.cpp	(revision 14970)
+++ /issm/trunk-jpl/src/c/solutions/gia_core.cpp	(revision 14971)
@@ -10,10 +10,9 @@
 #include "../modules/modules.h"
 #include "../solvers/solvers.h"
-
 void gia_core(FemModel* femmodel){
 
 	int i;
 	Vector<IssmDouble>*  wg  = NULL;
-	Vector<IssmDouble>*  dwgdt  = NULL;
+	Vector<IssmDouble>*  dwdtg  = NULL;
 	IssmDouble*          x   = NULL;
 	IssmDouble*          y   = NULL;
@@ -36,5 +35,5 @@
 	gsize      = femmodel->nodes->NumberOfDofs(configuration_type,GsetEnum);
 	wg = new Vector<IssmDouble>(gsize);
-	dwgdt = new Vector<IssmDouble>(gsize);
+	dwdtg = new Vector<IssmDouble>(gsize);
 
 	/*first, recover x and y vectors from vertices: */
@@ -42,12 +41,12 @@
 
 	/*call the main module: */
-	femmodel->Deflection(wg,dwgdt,x,y);
+	femmodel->Deflection(wg,dwdtg,x,y);
 
 	/*assemble vector: */
 	wg->Assemble();
-	dwgdt->Assemble();
+	dwdtg->Assemble();
 
 	InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,wg); 
-	InputUpdateFromVectorx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,dwgdt,GiadWdtEnum,VertexEnum); 
+	InputUpdateFromVectorx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,dwdtg,GiadWdtEnum,GiaAnalysisEnum);
 
 	if(save_results){
