Index: /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 21548)
+++ /issm/trunk-jpl/src/c/analyses/EnthalpyAnalysis.cpp	(revision 21549)
@@ -36,6 +36,6 @@
 	_assert_(N>0); _assert_(M>=iomodel->numberofvertices);
 	for(int i=0;i<iomodel->numberofvertices;i++){
-		for(int j=0;i<N;j++){
-			spcvector[i*N+j] = heatcapacity*(spcvector[i]-referencetemperature);
+		for(int j=0;j<N;j++){
+			spcvector[i*N+j] = heatcapacity*(spcvector[i*N+j]-referencetemperature);
 		}
 	}
Index: /issm/trunk-jpl/src/c/cores/transient_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 21548)
+++ /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 21549)
@@ -86,7 +86,15 @@
 		if(isthermal && domaintype==Domain3DEnum){ 
 			if(issmb){
+				bool isenthalpy;
+				femmodel->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
 				femmodel->parameters->FindParam(&smb_model,SmbEnum);
-				if(smb_model==SMBpddEnum) ResetBoundaryConditions(femmodel,ThermalAnalysisEnum);
-				if(smb_model==SMBd18opddEnum) ResetBoundaryConditions(femmodel,ThermalAnalysisEnum);
+				if(isenthalpy){
+					if(smb_model==SMBpddEnum)     ResetBoundaryConditions(femmodel,EnthalpyAnalysisEnum);
+					if(smb_model==SMBd18opddEnum) ResetBoundaryConditions(femmodel,EnthalpyAnalysisEnum);
+				}
+				else{
+					if(smb_model==SMBpddEnum)     ResetBoundaryConditions(femmodel,ThermalAnalysisEnum);
+					if(smb_model==SMBd18opddEnum) ResetBoundaryConditions(femmodel,ThermalAnalysisEnum);
+				}
 			}
 			if(VerboseSolution()) _printf0_("   computing thermal regime\n");
