Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 19593)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 19594)
@@ -2129,7 +2129,8 @@
 	IssmDouble C; 
 	IssmDouble Tz,Vz; 
-	IssmDouble rho_ice, aSnow,aIce;
+	IssmDouble rho_ice, rho_water,aSnow,aIce;
 	IssmDouble time,dt;
 	IssmDouble t,smb_dt;
+	IssmDouble yts;
 	IssmDouble Ta,V,dlw,dsw,P,eAir,pAir;
 	int        aIdx=0;
@@ -2163,5 +2164,4 @@
 	IssmDouble  mAdd;
 	int         m;
-	IssmDouble  SmbMassBalance=0;
 	int         count=0;
 	/*}}}*/
@@ -2173,4 +2173,5 @@
 	/*Retrieve material properties and parameters:{{{ */
 	rho_ice = matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+	rho_water = matpar->GetMaterialParameter(MaterialsRhoFreshwaterEnum);
 	parameters->FindParam(&aSnow,SmbASnowEnum);
 	parameters->FindParam(&aIce,SmbAIceEnum);
@@ -2383,9 +2384,8 @@
         if (T[m-1]!=T_bottom) _printf_("T(end)~=T_bottom" << "\n");
 		
-		SmbMassBalance += sumP + sumEC - sumR; //increment SMB for the entire time span of ice-flow dynamics.
-
 		count++;
 
 	} //for (t=time;t<=time+dt;t=t+smb_dt)
+
 
 	/*Save generated inputs: */
@@ -2400,5 +2400,9 @@
 	this->AddInput(new DoubleArrayInput(SmbAEnum,a,m));
 	this->AddInput(new DoubleArrayInput(SmbSwfEnum,swf,m));
-	this->AddInput(new DoubleInput(SmbMassBalanceEnum,time));
+	this->AddInput(new DoubleInput(SmbMassBalanceEnum,(sumP + sumEC -sumR)/rho_water/dt));
+	this->AddInput(new DoubleInput(SmbRunoffEnum,sumR/rho_water/dt));
+	this->AddInput(new DoubleInput(SmbPrecipitationEnum,sumP/rho_water/dt));
+	this->AddInput(new DoubleInput(SmbCondensationEnum,sumEC/rho_water/dt));
+
 
 
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 19593)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 19594)
@@ -396,4 +396,5 @@
 	SmbGspEnum,
 	SmbECEnum,
+	SmbCondensationEnum,
 	SmbWEnum,
 	SmbAEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 19593)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 19594)
@@ -398,4 +398,5 @@
 		case SmbGspEnum : return "SmbGsp";
 		case SmbECEnum : return "SmbEC";
+		case SmbCondensationEnum : return "SmbCondensation";
 		case SmbWEnum : return "SmbW";
 		case SmbAEnum : return "SmbA";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 19593)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 19594)
@@ -407,4 +407,5 @@
 	      else if (strcmp(name,"SmbGsp")==0) return SmbGspEnum;
 	      else if (strcmp(name,"SmbEC")==0) return SmbECEnum;
+	      else if (strcmp(name,"SmbCondensation")==0) return SmbCondensationEnum;
 	      else if (strcmp(name,"SmbW")==0) return SmbWEnum;
 	      else if (strcmp(name,"SmbA")==0) return SmbAEnum;
@@ -505,9 +506,9 @@
 	      else if (strcmp(name,"UzawaPressureAnalysis")==0) return UzawaPressureAnalysisEnum;
 	      else if (strcmp(name,"GiaSolution")==0) return GiaSolutionEnum;
-	      else if (strcmp(name,"GiaAnalysis")==0) return GiaAnalysisEnum;
          else stage=5;
    }
    if(stage==5){
-	      if (strcmp(name,"MeshdeformationSolution")==0) return MeshdeformationSolutionEnum;
+	      if (strcmp(name,"GiaAnalysis")==0) return GiaAnalysisEnum;
+	      else if (strcmp(name,"MeshdeformationSolution")==0) return MeshdeformationSolutionEnum;
 	      else if (strcmp(name,"MeshdeformationAnalysis")==0) return MeshdeformationAnalysisEnum;
 	      else if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum;
@@ -628,9 +629,9 @@
 	      else if (strcmp(name,"FractionIncrement")==0) return FractionIncrementEnum;
 	      else if (strcmp(name,"Friction")==0) return FrictionEnum;
-	      else if (strcmp(name,"Internal")==0) return InternalEnum;
          else stage=6;
    }
    if(stage==6){
-	      if (strcmp(name,"MassFlux")==0) return MassFluxEnum;
+	      if (strcmp(name,"Internal")==0) return InternalEnum;
+	      else if (strcmp(name,"MassFlux")==0) return MassFluxEnum;
 	      else if (strcmp(name,"MeltingOffset")==0) return MeltingOffsetEnum;
 	      else if (strcmp(name,"Misfit")==0) return MisfitEnum;
@@ -751,9 +752,9 @@
 	      else if (strcmp(name,"Outputdefinition1")==0) return Outputdefinition1Enum;
 	      else if (strcmp(name,"Outputdefinition2")==0) return Outputdefinition2Enum;
-	      else if (strcmp(name,"Outputdefinition3")==0) return Outputdefinition3Enum;
          else stage=7;
    }
    if(stage==7){
-	      if (strcmp(name,"Outputdefinition4")==0) return Outputdefinition4Enum;
+	      if (strcmp(name,"Outputdefinition3")==0) return Outputdefinition3Enum;
+	      else if (strcmp(name,"Outputdefinition4")==0) return Outputdefinition4Enum;
 	      else if (strcmp(name,"Outputdefinition5")==0) return Outputdefinition5Enum;
 	      else if (strcmp(name,"Outputdefinition6")==0) return Outputdefinition6Enum;
@@ -874,9 +875,9 @@
 	      else if (strcmp(name,"MinVel")==0) return MinVelEnum;
 	      else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;
-	      else if (strcmp(name,"MinVx")==0) return MinVxEnum;
          else stage=8;
    }
    if(stage==8){
-	      if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
+	      if (strcmp(name,"MinVx")==0) return MinVxEnum;
+	      else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
 	      else if (strcmp(name,"MaxAbsVx")==0) return MaxAbsVxEnum;
 	      else if (strcmp(name,"MinVy")==0) return MinVyEnum;
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 19593)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 19594)
@@ -390,4 +390,5 @@
 def SmbGspEnum(): return StringToEnum("SmbGsp")[0]
 def SmbECEnum(): return StringToEnum("SmbEC")[0]
+def SmbCondensationEnum(): return StringToEnum("SmbCondensation")[0]
 def SmbWEnum(): return StringToEnum("SmbW")[0]
 def SmbAEnum(): return StringToEnum("SmbA")[0]
Index: /issm/trunk-jpl/src/m/enum/SmbCondensationEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbCondensationEnum.m	(revision 19594)
+++ /issm/trunk-jpl/src/m/enum/SmbCondensationEnum.m	(revision 19594)
@@ -0,0 +1,11 @@
+function macro=SmbCondensationEnum()
+%SMBCONDENSATIONENUM - Enum of SmbCondensation
+%
+%   WARNING: DO NOT MODIFY THIS FILE
+%            this file has been automatically generated by src/c/shared/Enum/Synchronize.sh
+%            Please read src/c/shared/Enum/README for more information
+%
+%   Usage:
+%      macro=SmbCondensationEnum()
+
+macro=StringToEnum('SmbCondensation');
Index: /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.m
===================================================================
--- /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.m	(revision 19593)
+++ /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.m	(revision 19594)
@@ -200,4 +200,10 @@
 	elseif strcmp(fieldname,'SmbMassBalance'),
 		field = field*yts;
+	elseif strcmp(fieldname,'SmbPrecipitation'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbRunoff'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbCondensation'),
+		field = field*yts;
 	elseif strcmp(fieldname,'SmbAccumulation'),
 		field = field*yts;
