Index: /issm/trunk/src/m/classes/version/7.6/model.m
===================================================================
--- /issm/trunk/src/m/classes/version/7.6/model.m	(revision 8485)
+++ /issm/trunk/src/m/classes/version/7.6/model.m	(revision 8486)
@@ -122,4 +122,5 @@
 		 thermalconductivity=0;
 		 meltingpoint=0;
+		 referencetemperature=0; %for enthalpy
 		 beta=0;
 		 
@@ -272,4 +273,5 @@
 		 basal_melting_rate_correction_apply=0;
 		 pressure=NaN;
+		 waterfraction=NaN;
 		 
 		 %hydrology
@@ -571,4 +573,7 @@
 			 md.meltingpoint=273.15;
 
+			 %the reference temperature for enthalpy model (cf Aschwanden)
+			 md.referencetemperature=223.15;
+
 			 %rate of change of melting point with pressure (K/Pa)
 			 md.beta=9.8*10^-8;
Index: /issm/trunk/src/m/classes/version/7.7/model.m
===================================================================
--- /issm/trunk/src/m/classes/version/7.7/model.m	(revision 8485)
+++ /issm/trunk/src/m/classes/version/7.7/model.m	(revision 8486)
@@ -122,4 +122,5 @@
 		 thermalconductivity=0;
 		 meltingpoint=0;
+		 referencetemperature=0; %for enthalpy
 		 beta=0;
 		 
@@ -267,4 +268,5 @@
 		 vel=NaN;
 		 temperature=NaN; %temperature solution vector
+		 waterfraction=NaN;
 		 gl_melting_rate=NaN;
 		 basal_melting_rate=NaN;
@@ -643,4 +645,7 @@
 			 md.meltingpoint=273.15;
 
+			 %the reference temperature for enthalpy model (cf Aschwanden)
+			 md.referencetemperature=223.15;
+
 			 %rate of change of melting point with pressure (K/Pa)
 			 md.beta=9.8*10^-8;
Index: /issm/trunk/src/m/enum/ReferenceTemperatureEnum.m
===================================================================
--- /issm/trunk/src/m/enum/ReferenceTemperatureEnum.m	(revision 8486)
+++ /issm/trunk/src/m/enum/ReferenceTemperatureEnum.m	(revision 8486)
@@ -0,0 +1,11 @@
+function macro=ReferenceTemperatureEnum()
+%REFERENCETEMPERATUREENUM - Enum of ReferenceTemperature
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=ReferenceTemperatureEnum()
+
+macro=StringToEnum('ReferenceTemperature');
Index: /issm/trunk/src/m/enum/WaterFractionEnum.m
===================================================================
--- /issm/trunk/src/m/enum/WaterFractionEnum.m	(revision 8486)
+++ /issm/trunk/src/m/enum/WaterFractionEnum.m	(revision 8486)
@@ -0,0 +1,11 @@
+function macro=WaterFractionEnum()
+%WATERFRACTIONENUM - Enum of WaterFraction
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/EnumDefinitions/Synchronize.sh
+%            Please read src/c/EnumDefinitions/README for more information
+%
+%   Usage:
+%      macro=WaterFractionEnum()
+
+macro=StringToEnum('WaterFraction');
Index: /issm/trunk/src/m/model/extrude.m
===================================================================
--- /issm/trunk/src/m/model/extrude.m	(revision 8485)
+++ /issm/trunk/src/m/model/extrude.m	(revision 8486)
@@ -170,4 +170,5 @@
 if ~isnan(md.vel),md.vel=project3d(md,md.vel,'node');end;
 if ~isnan(md.temperature),md.temperature=project3d(md,md.temperature,'node');end;
+if ~isnan(md.waterfraction),md.waterfraction=project3d(md,md.waterfraction,'node');end;
 if ~isnan(md.surface_slopex),md.surface_slopex=project3d(md,md.surface_slopex,'node');end;
 if ~isnan(md.surface_slopey),md.surface_slopey=project3d(md,md.surface_slopey,'node');end;
Index: /issm/trunk/src/m/model/ismodelselfconsistent.m
===================================================================
--- /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 8485)
+++ /issm/trunk/src/m/model/ismodelselfconsistent.m	(revision 8486)
@@ -510,4 +510,42 @@
 				%INITIAL TEMPERATURE, MELTING AND ACCUMULATION
 				fields={'temperature','surface_mass_balance','basal_melting_rate'};
+				checksize(md,fields,[md.numberofnodes 1]);
+				checknan(md,fields);
+
+				%INITIAL TEMPERATURE
+				fields={'temperature','spctemperature(:,2)','observed_temperature'};
+				checkgreater(md,fields,0)
+			end
+			%}}}
+		case EnthalpyAnalysisEnum,
+			% {{{2
+			%EXTRUSION
+			if (md.dim==2),
+				if md.solution_type==TransientSolutionEnum,
+					return;
+				else
+					error(['model not consistent: for a ' EnumToString(md.solution_type) ' computation, the model must be 3d, extrude it first!'])
+				end
+			end
+
+			%CHECK THAT WE ARE NOT FULLY CONSTRAINED
+			if isnan(find(~md.spctemperature(:,1))),
+				error(['model not consistent: model ' md.name ' is totally constrained for temperature, no need to solve!']);
+			end
+
+			%VELOCITIES AND PRESSURE
+			fields={'vx','vy','vz','pressure','geothermalflux'};
+			checksize(md,fields,[md.numberofnodes 1]);
+			checknan(md,fields);
+
+			%THERMAL TRANSIENT
+			if md.dt~=0,
+
+				%DT and NDT
+				fields={'dt','ndt'};
+				checkgreaterstrict(md,fields,0);
+
+				%INITIAL TEMPERATURE, MELTING, ACCUMULATION AND WATERFRACTION
+				fields={'temperature','surface_mass_balance','basal_melting_rate','waterfraction'};
 				checksize(md,fields,[md.numberofnodes 1]);
 				checknan(md,fields);
Index: /issm/trunk/src/m/model/marshall.m
===================================================================
--- /issm/trunk/src/m/model/marshall.m	(revision 8485)
+++ /issm/trunk/src/m/model/marshall.m	(revision 8486)
@@ -66,4 +66,5 @@
 WriteData(fid,md.pressure,'Mat','pressure');
 WriteData(fid,md.temperature,'Mat','temperature');
+WriteData(fid,md.waterfraction,'Mat','waterfraction');
 
 
@@ -202,4 +203,5 @@
 WriteData(fid,md.hydro_kn,'Scalar','hydro_kn');
 WriteData(fid,md.meltingpoint,'Scalar','meltingpoint');
+WriteData(fid,md.referencetemperature,'Scalar','referencetemperature');
 WriteData(fid,md.latentheat,'Scalar','latentheat');
 WriteData(fid,md.heatcapacity,'Scalar','heatcapacity');
