Index: /issm/trunk/src/c/objects/Elements/Beam.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Beam.cpp	(revision 3943)
+++ /issm/trunk/src/c/objects/Elements/Beam.cpp	(revision 3944)
@@ -59,4 +59,5 @@
 
 	/*hooks: */
+	ISSMASSERT(iomodel->uppernodes);
 	beam_matice_id=index+1; //refers to the corresponding material property card
 	beam_matpar_id=iomodel->numberofvertices2d*(iomodel->numlayers-1)+1;//refers to the corresponding matpar property card
@@ -152,5 +153,4 @@
 	this->parameters=NULL;
 
-
 }
 /*}}}*/
Index: /issm/trunk/src/c/objects/Elements/Sing.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Sing.cpp	(revision 3943)
+++ /issm/trunk/src/c/objects/Elements/Sing.cpp	(revision 3944)
@@ -90,5 +90,4 @@
 		this->inputs->AddInput(new SingVertexInput(VzOldEnum,iomodel->vz_obs[i]));
 	}
-
 
 	//this->parameters: we still can't point to it, it may not even exist. Configure will handle this.
Index: /issm/trunk/src/c/objects/Elements/Tria.cpp
===================================================================
--- /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 3943)
+++ /issm/trunk/src/c/objects/Elements/Tria.cpp	(revision 3944)
@@ -62,4 +62,5 @@
 	else{
 		/*Continuous Galerkin*/
+		ISSMASSERT(iomodel->elements);
 		for(i=0;i<3;i++){ 
 			tria_node_ids[i]=(int)*(iomodel->elements+3*index+i); //ids for vertices are in the elements array from Matlab
@@ -152,17 +153,21 @@
 		this->inputs->AddInput(new TriaVertexInput(WeightsEnum,nodeinputs));
 	}
-	/*Default vx,vy and vz?:*/
-	if(!iomodel->vx && iomodel->vx_obs){
-		for(i=0;i<3;i++)nodeinputs[i]=iomodel->vx_obs[tria_node_ids[i]-1]/iomodel->yts;
+
+	/*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_node_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 && iomodel->vy_obs){
-		for(i=0;i<3;i++)nodeinputs[i]=iomodel->vy_obs[tria_node_ids[i]-1]/iomodel->yts;
+	if(!iomodel->vy){
+		if (iomodel->vy_obs) for(i=0;i<3;i++)nodeinputs[i]=iomodel->vy_obs[tria_node_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 && iomodel->vz_obs){
-		for(i=0;i<3;i++)nodeinputs[i]=iomodel->vz_obs[tria_node_ids[i]-1]/iomodel->yts;
+	if(!iomodel->vz){
+		if (iomodel->vz_obs) for(i=0;i<3;i++)nodeinputs[i]=iomodel->vz_obs[tria_node_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));
