Index: /issm/trunk-jpl/src/c/analyses/thermal_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/thermal_core.cpp	(revision 16271)
+++ /issm/trunk-jpl/src/c/analyses/thermal_core.cpp	(revision 16272)
@@ -34,5 +34,5 @@
 
 	if(VerboseSolution()) _printf0_("   setting basal Dirichlet boundary conditions\n");
-	femmodel->UpdateThermalBasalConstraintsx();
+	femmodel->UpdateBasalConstraintsEnthalpyx();
 
 	if(VerboseSolution()) _printf0_("   computing temperatures\n");
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 16271)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 16272)
@@ -126,5 +126,5 @@
 
 		#ifdef _HAVE_THERMAL_
-		virtual void UpdateThermalBasalConstraints(void)=0;
+		virtual void UpdateBasalConstraintsEnthalpy(void)=0;
 		virtual void ComputeBasalMeltingrate(void)=0;
        	virtual void DrainWaterfraction(void)=0;
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16271)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 16272)
@@ -4577,5 +4577,5 @@
 			}
 			else{
-				// only base temperate, set Dirichlet BCs in Penta::UpdateThermalBasalConstraints()
+				// only base temperate, set Dirichlet BCs in Penta::UpdateBasalConstraintsEnthalpy()
 			}
 		}
@@ -4992,6 +4992,6 @@
 }
 /*}}}*/
-/*FUNCTION Penta::UpdateThermalBasalConstraints{{{*/
-void  Penta::UpdateThermalBasalConstraints(void){
+/*FUNCTION Penta::UpdateBasalConstraintsEnthalpy{{{*/
+void  Penta::UpdateBasalConstraintsEnthalpy(void){
 
 	/*Intermediary*/
@@ -5008,6 +5008,6 @@
 	parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
 	if(!isenthalpy) return;
-	//parameters->FindParam(&isdynamicbasalspc,ThermalIsdynamicbasalspcEnum);
-	isdynamicbasalspc = true;
+	parameters->FindParam(&isdynamicbasalspc,ThermalIsdynamicbasalspcEnum);
+	isdynamicbasalspc = true; // TODO: remove before release
 	if(!isdynamicbasalspc) return;
 
@@ -5026,15 +5026,17 @@
 	for(int i=0;i<numindices;i++){
 		gauss->GaussNode(this->element_type,indices[i]);
-        gaussup->GaussNode(this->element_type,indicesup[i]); // TODO: check: are the nodes corresponding?
-
-		/*Check wether there is a temperate layer at the base or not -> TODO: Johannes:) */
-        /*check if node is temperate, if not, return*/
+        gaussup->GaussNode(this->element_type,indicesup[i]); 
+
+		/*Check wether there is a temperate layer at the base or not */
+        /*check if node is temperate, if not, continue*/
         enthalpy_input->GetInputValue(&enthalpy, gauss);
 		pressure_input->GetInputValue(&pressure, gauss);
         if (enthalpy<matpar->PureIceEnthalpy(pressure)){
-          // TODO: reset, if necessary, all spcs to non-valid 
           continue;
         }
-        /*check if upper node is temperate. if yes, then we have a temperate layer of positive thickness. if not, continue.*/
+        /*check if upper node is temperate. 
+          if yes, then we have a temperate layer of positive thickness and 
+          reset the spc. 
+          if not, apply dirichlet BC.*/
         enthalpy_input->GetInputValue(&enthalpyup, gaussup);
 		pressure_input->GetInputValue(&pressureup, gaussup);    
@@ -5047,5 +5049,4 @@
 			/*Calculate enthalpy at pressure melting point */
 			h_pmp=matpar->PureIceEnthalpy(pressure);
-
 			/*Apply Dirichlet condition (dof = 0 here, since there is only one degree of freedom per node)*/
 			nodes[indices[i]]->ApplyConstraint(1,h_pmp);
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 16271)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 16272)
@@ -347,5 +347,5 @@
 		void           InputUpdateFromSolutionThermal(IssmDouble* solutiong);
 		void           InputUpdateFromSolutionEnthalpy(IssmDouble* solutiong);
-		void           UpdateThermalBasalConstraints(void);
+		void           UpdateBasalConstraintsEnthalpy(void);
 		void           ComputeBasalMeltingrate(void);
 		void           DrainWaterfraction(void);
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 16271)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 16272)
@@ -250,5 +250,5 @@
 
 		#ifdef _HAVE_THERMAL_
-		void UpdateThermalBasalConstraints(void){_error_("not implemented yet");};
+		void UpdateBasalConstraintsEnthalpy(void){_error_("not implemented yet");};
 		void ComputeBasalMeltingrate(void){_error_("not implemented yet");};
 		void DrainWaterfraction(void){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 16271)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 16272)
@@ -1242,9 +1242,9 @@
 #endif
 #ifdef _HAVE_THERMAL_
-void FemModel::UpdateThermalBasalConstraintsx(void){ /*{{{*/
+void FemModel::UpdateBasalConstraintsEnthalpyx(void){ /*{{{*/
 
 	for(int i=0;i<elements->Size();i++){
 		Element* element=dynamic_cast<Element*>(elements->GetObjectByOffset(i));
-		element->UpdateThermalBasalConstraints();
+		element->UpdateBasalConstraintsEnthalpy();
 	}
 
Index: /issm/trunk-jpl/src/c/classes/FemModel.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 16271)
+++ /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 16272)
@@ -100,5 +100,5 @@
 		#endif
 		#ifdef _HAVE_THERMAL_
-		void UpdateThermalBasalConstraintsx(void);
+		void UpdateBasalConstraintsEnthalpyx(void);
 		#endif
 };
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 16271)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 16272)
@@ -84,4 +84,5 @@
 	parameters->AddObject(iomodel->CopyConstantObject(TransientIsgiaEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(ThermalIsenthalpyEnum));
+	parameters->AddObject(iomodel->CopyConstantObject(ThermalIsdynamicbasalspcEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(MaterialsRheologyLawEnum));
 	parameters->AddObject(iomodel->CopyConstantObject(AutodiffIsautodiffEnum));
Index: /issm/trunk-jpl/src/c/modules/PostprocessingEnthalpyx/PostprocessingEnthalpyx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/PostprocessingEnthalpyx/PostprocessingEnthalpyx.cpp	(revision 16271)
+++ /issm/trunk-jpl/src/c/modules/PostprocessingEnthalpyx/PostprocessingEnthalpyx.cpp	(revision 16272)
@@ -12,10 +12,5 @@
 	Element* element=NULL;
 
-	/*drain excess water fraction: */
-	for (i=0;i<femmodel->elements->Size();i++){
-		element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
-		element->DrainWaterfraction();
-	}
-
+	
 	/*Compute basal melting rates: */
 	for (i=0;i<femmodel->elements->Size();i++){
@@ -24,8 +19,15 @@
 	}
 
+    /*drain excess water fraction: */
+    /*	for (i=0;i<femmodel->elements->Size();i++){
+		element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
+		element->DrainWaterfraction();
+	}
+*/
+
 	/*Update basal dirichlet BCs for enthalpy: */
 	for (i=0;i<femmodel->elements->Size();i++){
 		element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i));
-		element->UpdateThermalBasalConstraints();
+		element->UpdateBasalConstraintsEnthalpy();
 	}
 }
