Index: /issm/trunk/src/c/objects/Elements/Penta.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4259)
+++ /issm/trunk/src/c/objects/Elements/Penta.cpp	(revision 4260)
@@ -1679,28 +1679,40 @@
 		this->inputs->AddInput(new PentaVertexInput(WeightsEnum,nodeinputs));
 	}
-
-	/*default vx,vy and vz: either observation or 0 */
-	if (!iomodel->vx){
-		if (iomodel->vx_obs) for(i=0;i<6;i++)nodeinputs[i]=iomodel->vx_obs[penta_vertex_ids[i]-1]/iomodel->yts;
-		else                 for(i=0;i<6;i++)nodeinputs[i]=0;
-		this->inputs->AddInput(new PentaVertexInput(VxEnum,nodeinputs));
-		this->inputs->AddInput(new PentaVertexInput(VxOldEnum,nodeinputs));
-	}
-	if (!iomodel->vy){
-		if (iomodel->vy_obs) for(i=0;i<6;i++)nodeinputs[i]=iomodel->vy_obs[penta_vertex_ids[i]-1]/iomodel->yts;
-		else                 for(i=0;i<6;i++)nodeinputs[i]=0;
-		this->inputs->AddInput(new PentaVertexInput(VyEnum,nodeinputs));
-		this->inputs->AddInput(new PentaVertexInput(VyOldEnum,nodeinputs));
-	}
-	if (!iomodel->vz){
-		if (iomodel->vz_obs) for(i=0;i<6;i++)nodeinputs[i]=iomodel->vz_obs[penta_vertex_ids[i]-1]/iomodel->yts;
-		else                 for(i=0;i<6;i++)nodeinputs[i]=0;
-		this->inputs->AddInput(new PentaVertexInput(VzEnum,nodeinputs));
-		this->inputs->AddInput(new PentaVertexInput(VzOldEnum,nodeinputs));
-	}
 	if (iomodel->elementoniceshelf) this->inputs->AddInput(new BoolInput(ElementOnIceShelfEnum,(IssmBool)iomodel->elementoniceshelf[index]));
 	if (iomodel->elementonbed) this->inputs->AddInput(new BoolInput(ElementOnBedEnum,(IssmBool)iomodel->elementonbed[index]));
 	if (iomodel->elementonwater) this->inputs->AddInput(new BoolInput(ElementOnWaterEnum,(IssmBool)iomodel->elementonwater[index]));
 	if (iomodel->elementonsurface) this->inputs->AddInput(new BoolInput(ElementOnSurfaceEnum,(IssmBool)iomodel->elementonsurface[index]));
+
+	/*Defaults if not provided in iomodel*/
+	switch(analysis_type){
+
+		case DiagnosticHorizAnalysisEnum: case DiagnosticVertAnalysisEnum: case DiagnosticStokesAnalysisEnum:
+
+			/*default vx,vy and vz: either observation or 0 */
+			if(!iomodel->vx){
+				if (iomodel->vx_obs) for(i=0;i<6;i++)nodeinputs[i]=iomodel->vx_obs[penta_vertex_ids[i]-1]/iomodel->yts;
+				else                 for(i=0;i<6;i++)nodeinputs[i]=0;
+				this->inputs->AddInput(new PentaVertexInput(VxEnum,nodeinputs));
+				this->inputs->AddInput(new PentaVertexInput(VxOldEnum,nodeinputs));
+			}
+			if(!iomodel->vy){
+				if (iomodel->vy_obs) for(i=0;i<6;i++)nodeinputs[i]=iomodel->vy_obs[penta_vertex_ids[i]-1]/iomodel->yts;
+				else                 for(i=0;i<6;i++)nodeinputs[i]=0;
+				this->inputs->AddInput(new PentaVertexInput(VyEnum,nodeinputs));
+				this->inputs->AddInput(new PentaVertexInput(VyOldEnum,nodeinputs));
+			}
+			if(!iomodel->vz){
+				if (iomodel->vz_obs) for(i=0;i<6;i++)nodeinputs[i]=iomodel->vz_obs[penta_vertex_ids[i]-1]/iomodel->yts;
+				else                 for(i=0;i<6;i++)nodeinputs[i]=0;
+				this->inputs->AddInput(new PentaVertexInput(VzEnum,nodeinputs));
+				this->inputs->AddInput(new PentaVertexInput(VzOldEnum,nodeinputs));
+			}
+			break;
+
+		default:
+			/*No update for other solution types*/
+			break;
+
+	}
 
 	//elements of type 3 are macayeal type penta. we collapse the formulation on their base.
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 4259)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 4260)
@@ -181,29 +181,40 @@
 		this->inputs->AddInput(new TriaVertexInput(WeightsEnum,nodeinputs));
 	}
-
-	/*default vx,vy and vz: either observation or 0 */
-	if(!iomodel->vx){
-		if (iomodel->vx_obs) for(i=0;i<3;i++)nodeinputs[i]=iomodel->vx_obs[tria_vertex_ids[i]-1]/iomodel->yts;
-		else                 for(i=0;i<3;i++)nodeinputs[i]=0;
-		this->inputs->AddInput(new TriaVertexInput(VxEnum,nodeinputs));
-		this->inputs->AddInput(new TriaVertexInput(VxOldEnum,nodeinputs));
-	}
-	if(!iomodel->vy){
-		if (iomodel->vy_obs) for(i=0;i<3;i++)nodeinputs[i]=iomodel->vy_obs[tria_vertex_ids[i]-1]/iomodel->yts;
-		else                 for(i=0;i<3;i++)nodeinputs[i]=0;
-		this->inputs->AddInput(new TriaVertexInput(VyEnum,nodeinputs));
-		this->inputs->AddInput(new TriaVertexInput(VyOldEnum,nodeinputs));
-	}
-	if(!iomodel->vz){
-		if (iomodel->vz_obs) for(i=0;i<3;i++)nodeinputs[i]=iomodel->vz_obs[tria_vertex_ids[i]-1]/iomodel->yts;
-		else                 for(i=0;i<3;i++)nodeinputs[i]=0;
-		this->inputs->AddInput(new TriaVertexInput(VzEnum,nodeinputs));
-		this->inputs->AddInput(new TriaVertexInput(VzOldEnum,nodeinputs));
-	}
-
 	if (iomodel->elementoniceshelf) this->inputs->AddInput(new BoolInput(ElementOnIceShelfEnum,(IssmBool)iomodel->elementoniceshelf[index]));
 	if (iomodel->elementonbed) this->inputs->AddInput(new BoolInput(ElementOnBedEnum,(IssmBool)iomodel->elementonbed[index]));
 	if (iomodel->elementonwater) this->inputs->AddInput(new BoolInput(ElementOnWaterEnum,(IssmBool)iomodel->elementonwater[index]));
 	if (iomodel->elementonsurface) this->inputs->AddInput(new BoolInput(ElementOnSurfaceEnum,(IssmBool)iomodel->elementonsurface[index]));
+
+	/*Defaults if not provided in iomodel*/
+	switch(analysis_type){
+
+		case DiagnosticHorizAnalysisEnum: case DiagnosticVertAnalysisEnum: case DiagnosticStokesAnalysisEnum:
+
+			/*default vx,vy and vz: either observation or 0 */
+			if(!iomodel->vx){
+				if (iomodel->vx_obs) for(i=0;i<3;i++)nodeinputs[i]=iomodel->vx_obs[tria_vertex_ids[i]-1]/iomodel->yts;
+				else                 for(i=0;i<3;i++)nodeinputs[i]=0;
+				this->inputs->AddInput(new TriaVertexInput(VxEnum,nodeinputs));
+				this->inputs->AddInput(new TriaVertexInput(VxOldEnum,nodeinputs));
+			}
+			if(!iomodel->vy){
+				if (iomodel->vy_obs) for(i=0;i<3;i++)nodeinputs[i]=iomodel->vy_obs[tria_vertex_ids[i]-1]/iomodel->yts;
+				else                 for(i=0;i<3;i++)nodeinputs[i]=0;
+				this->inputs->AddInput(new TriaVertexInput(VyEnum,nodeinputs));
+				this->inputs->AddInput(new TriaVertexInput(VyOldEnum,nodeinputs));
+			}
+			if(!iomodel->vz){
+				if (iomodel->vz_obs) for(i=0;i<3;i++)nodeinputs[i]=iomodel->vz_obs[tria_vertex_ids[i]-1]/iomodel->yts;
+				else                 for(i=0;i<3;i++)nodeinputs[i]=0;
+				this->inputs->AddInput(new TriaVertexInput(VzEnum,nodeinputs));
+				this->inputs->AddInput(new TriaVertexInput(VzOldEnum,nodeinputs));
+			}
+			break;
+
+		default:
+			/*No update for other solution types*/
+			break;
+
+	}
 
 	//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
