Index: /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 17181)
+++ /issm/trunk-jpl/src/c/analyses/FreeSurfaceBaseAnalysis.cpp	(revision 17182)
@@ -145,5 +145,5 @@
 	Input* vx_input=basalelement->GetInput(VxEnum); _assert_(vx_input);
 	Input* vy_input=NULL;
-	if(dim>1){basalelement->GetInput(VyEnum); _assert_(vy_input);}
+	if(dim>1){vy_input = basalelement->GetInput(VyEnum); _assert_(vy_input);}
 	h = basalelement->CharacteristicLength();
 
Index: /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 17181)
+++ /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 17182)
@@ -154,5 +154,5 @@
 	Input* vx_input=topelement->GetInput(VxEnum); _assert_(vx_input);
 	Input* vy_input=NULL;
-	if(dim>1){topelement->GetInput(VyEnum); _assert_(vy_input);}
+	if(dim>1){vy_input = topelement->GetInput(VyEnum); _assert_(vy_input);}
 	h = topelement->CharacteristicLength();
 
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 17181)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 17182)
@@ -3053,4 +3053,51 @@
 }
 /*}}}*/
+/*FUNCTION Penta::UpdateConstraintsExtrudeFromBase{{{*/
+void  Penta::UpdateConstraintsExtrudeFromBase(void){
+
+	if(!IsOnBed()) return;
+
+	int        extrusioninput;
+	IssmDouble value,isonbed;
+
+	this->parameters->FindParam(&extrusioninput,InputToExtrudeEnum);
+	Input* input = inputs->GetInput(extrusioninput);      _assert_(extrusioninput);
+	Input* onbed = inputs->GetInput(MeshVertexonbedEnum); _assert_(onbed);
+
+	GaussPenta* gauss=new GaussPenta();
+	for(int iv=0;iv<this->NumberofNodes();iv++){
+		gauss->GaussNode(this->element_type,iv);
+		onbed->GetInputValue(&isonbed,gauss);
+		if(isonbed==1.){
+			input->GetInputValue(&value,gauss);
+			this->nodes[iv]->ApplyConstraint(1,value);
+		}
+	}
+	delete gauss;
+
+}
+/*}}}*/
+/*FUNCTION Penta::UpdateConstraintsExtrudeFromTop{{{*/
+void  Penta::UpdateConstraintsExtrudeFromTop(void){
+
+	if(!IsOnSurface()) return;
+
+	int extrusioninput;
+	int indices[3]={3,4,5};
+	IssmDouble value;
+
+	this->parameters->FindParam(&extrusioninput,InputToExtrudeEnum);
+	Input* input = inputs->GetInput(extrusioninput); _assert_(extrusioninput);
+
+	GaussPenta* gauss=new GaussPenta();
+	for(int i=0;i<3;i++){
+		gauss->GaussNode(P1Enum,indices[i]);
+		input->GetInputValue(&value,gauss);
+		this->nodes[indices[i]]->ApplyConstraint(1,value);
+	}
+	delete gauss;
+
+}
+/*}}}*/
 /*FUNCTION Penta::ValueP1OnGauss{{{*/
 void Penta::ValueP1OnGauss(IssmDouble* pvalue,IssmDouble* values,Gauss* gauss){
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 17181)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 17182)
@@ -270,6 +270,6 @@
 		#endif
 
-		void           UpdateConstraintsExtrudeFromBase(void){_error_("not implemented yet");};
-		void           UpdateConstraintsExtrudeFromTop(void){_error_("not implemented yet");};
+		void           UpdateConstraintsExtrudeFromBase(void);
+		void           UpdateConstraintsExtrudeFromTop(void);
 		/*}}}*/
 };
Index: /issm/trunk-jpl/src/c/cores/masstransport_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/masstransport_core.cpp	(revision 17181)
+++ /issm/trunk-jpl/src/c/cores/masstransport_core.cpp	(revision 17182)
@@ -48,5 +48,5 @@
 		femmodel->SetCurrentConfiguration(FreeSurfaceBaseAnalysisEnum);
 		solutionsequence_linear(femmodel);
-		if(meshtype==Mesh2DverticalEnum){
+		if(meshtype!=Mesh2DhorizontalEnum){
 			femmodel->parameters->SetParam(BedEnum,InputToExtrudeEnum);
 			extrudefrombase_core(femmodel);
@@ -54,5 +54,5 @@
 		femmodel->SetCurrentConfiguration(FreeSurfaceTopAnalysisEnum);
 		solutionsequence_linear(femmodel);
-		if(meshtype==Mesh2DverticalEnum){
+		if(meshtype!=Mesh2DhorizontalEnum){
 			femmodel->parameters->SetParam(SurfaceEnum,InputToExtrudeEnum);
 			extrudefromtop_core(femmodel);
