Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 25806)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 25807)
@@ -3644,4 +3644,9 @@
 	IssmDouble sumMass=0.0;
 	IssmDouble dMass=0.0;
+	IssmDouble accsumR=0.0;
+	IssmDouble accsumM=0.0;
+	IssmDouble accsumSMB=0.0;
+	IssmDouble accsumEC=0.0;
+	IssmDouble accsumP=0.0;
 	bool isgraingrowth,isalbedo,isshortwave,isthermal,isaccumulation,ismelt,isdensification,isturbulentflux;
 	bool isclimatology=false;
@@ -3803,4 +3808,10 @@
 		}
 
+		this->SetElementInput(SmbAccumulatedECEnum,0.0);
+		this->SetElementInput(SmbAccumulatedMassBalanceEnum,0.0);
+		this->SetElementInput(SmbAccumulatedMeltEnum,0.0);
+		this->SetElementInput(SmbAccumulatedRunoffEnum,0.0);
+		this->SetElementInput(SmbAccumulatedPrecipitationEnum,0.0);
+
 		/*Flag the initialization:*/
 		this->SetBoolInput(this->inputs,SmbIsInitializedEnum,true);
@@ -3997,4 +4008,24 @@
 		if (T[m-1]!=T_bottom) _printf_("T(end)~=T_bottom" << "\n");
 	}
+
+	/*Save accumulated inputs {{{*/
+   Input *accsumEC_input         = this->GetInput(SmbAccumulatedECEnum);  _assert_(accsumEC_input);
+   Input *accsumM_input          = this->GetInput(SmbAccumulatedMeltEnum);  _assert_(accsumM_input);
+   Input *accsumR_input          = this->GetInput(SmbAccumulatedRunoffEnum);  _assert_(accsumR_input);
+   Input *accsumP_input          = this->GetInput(SmbAccumulatedPrecipitationEnum);  _assert_(accsumP_input);
+   Input *accsumSMB_input        = this->GetInput(SmbAccumulatedMassBalanceEnum);  _assert_(accsumP_input);
+
+   accsumEC_input->GetInputAverage(&accsumEC);
+   accsumM_input->GetInputAverage(&accsumM);
+   accsumR_input->GetInputAverage(&accsumR);
+   accsumP_input->GetInputAverage(&accsumP);
+   accsumSMB_input->GetInputAverage(&accsumSMB);
+
+	this->SetElementInput(SmbAccumulatedECEnum,accsumEC+EC/rho_ice);
+	this->SetElementInput(SmbAccumulatedMassBalanceEnum,accsumSMB+(P + EC -R)/rho_ice);
+	this->SetElementInput(SmbAccumulatedMeltEnum,accsumM+M/rho_ice);
+	this->SetElementInput(SmbAccumulatedRunoffEnum,accsumR+R/rho_ice);
+	this->SetElementInput(SmbAccumulatedPrecipitationEnum,accsumP+P/rho_ice);
+   /*}}}*/
 
 	/*Save generated inputs: */
Index: /issm/trunk-jpl/src/c/shared/Enum/Enum.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 25806)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 25807)
@@ -743,4 +743,9 @@
 syn keyword cConstant SigmaNNEnum
 syn keyword cConstant SigmaVMEnum
+syn keyword cConstant SmbAccumulatedECEnum
+syn keyword cConstant SmbAccumulatedMassBalanceEnum
+syn keyword cConstant SmbAccumulatedMeltEnum
+syn keyword cConstant SmbAccumulatedPrecipitationEnum
+syn keyword cConstant SmbAccumulatedRunoffEnum
 syn keyword cConstant SmbAEnum
 syn keyword cConstant SmbAValueEnum
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 25806)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 25807)
@@ -739,4 +739,9 @@
 	SigmaNNEnum,
 	SigmaVMEnum,
+	SmbAccumulatedECEnum,
+	SmbAccumulatedMassBalanceEnum,
+	SmbAccumulatedMeltEnum,
+	SmbAccumulatedPrecipitationEnum,
+	SmbAccumulatedRunoffEnum,
 	SmbAEnum,
 	SmbAValueEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 25806)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 25807)
@@ -745,4 +745,9 @@
 		case SigmaNNEnum : return "SigmaNN";
 		case SigmaVMEnum : return "SigmaVM";
+		case SmbAccumulatedECEnum : return "SmbAccumulatedEC";
+		case SmbAccumulatedMassBalanceEnum : return "SmbAccumulatedMassBalance";
+		case SmbAccumulatedMeltEnum : return "SmbAccumulatedMelt";
+		case SmbAccumulatedPrecipitationEnum : return "SmbAccumulatedPrecipitation";
+		case SmbAccumulatedRunoffEnum : return "SmbAccumulatedRunoff";
 		case SmbAEnum : return "SmbA";
 		case SmbAValueEnum : return "SmbAValue";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 25806)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 25807)
@@ -763,4 +763,9 @@
 	      else if (strcmp(name,"SigmaNN")==0) return SigmaNNEnum;
 	      else if (strcmp(name,"SigmaVM")==0) return SigmaVMEnum;
+	      else if (strcmp(name,"SmbAccumulatedEC")==0) return SmbAccumulatedECEnum;
+	      else if (strcmp(name,"SmbAccumulatedMassBalance")==0) return SmbAccumulatedMassBalanceEnum;
+	      else if (strcmp(name,"SmbAccumulatedMelt")==0) return SmbAccumulatedMeltEnum;
+	      else if (strcmp(name,"SmbAccumulatedPrecipitation")==0) return SmbAccumulatedPrecipitationEnum;
+	      else if (strcmp(name,"SmbAccumulatedRunoff")==0) return SmbAccumulatedRunoffEnum;
 	      else if (strcmp(name,"SmbA")==0) return SmbAEnum;
 	      else if (strcmp(name,"SmbAValue")==0) return SmbAValueEnum;
@@ -870,13 +875,13 @@
 	      else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum;
 	      else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum;
-	      else if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
+         else stage=8;
+   }
+   if(stage==8){
+	      if (strcmp(name,"StressTensoryy")==0) return StressTensoryyEnum;
 	      else if (strcmp(name,"StressTensoryz")==0) return StressTensoryzEnum;
 	      else if (strcmp(name,"StressTensorzz")==0) return StressTensorzzEnum;
 	      else if (strcmp(name,"SurfaceAbsMisfit")==0) return SurfaceAbsMisfitEnum;
 	      else if (strcmp(name,"SurfaceAbsVelMisfit")==0) return SurfaceAbsVelMisfitEnum;
-         else stage=8;
-   }
-   if(stage==8){
-	      if (strcmp(name,"Area")==0) return AreaEnum;
+	      else if (strcmp(name,"Area")==0) return AreaEnum;
 	      else if (strcmp(name,"SealevelArea")==0) return SealevelAreaEnum;
 	      else if (strcmp(name,"SurfaceArea")==0) return SurfaceAreaEnum;
@@ -993,13 +998,13 @@
 	      else if (strcmp(name,"Outputdefinition70")==0) return Outputdefinition70Enum;
 	      else if (strcmp(name,"Outputdefinition71")==0) return Outputdefinition71Enum;
-	      else if (strcmp(name,"Outputdefinition72")==0) return Outputdefinition72Enum;
+         else stage=9;
+   }
+   if(stage==9){
+	      if (strcmp(name,"Outputdefinition72")==0) return Outputdefinition72Enum;
 	      else if (strcmp(name,"Outputdefinition73")==0) return Outputdefinition73Enum;
 	      else if (strcmp(name,"Outputdefinition74")==0) return Outputdefinition74Enum;
 	      else if (strcmp(name,"Outputdefinition75")==0) return Outputdefinition75Enum;
 	      else if (strcmp(name,"Outputdefinition76")==0) return Outputdefinition76Enum;
-         else stage=9;
-   }
-   if(stage==9){
-	      if (strcmp(name,"Outputdefinition77")==0) return Outputdefinition77Enum;
+	      else if (strcmp(name,"Outputdefinition77")==0) return Outputdefinition77Enum;
 	      else if (strcmp(name,"Outputdefinition78")==0) return Outputdefinition78Enum;
 	      else if (strcmp(name,"Outputdefinition79")==0) return Outputdefinition79Enum;
@@ -1116,13 +1121,13 @@
 	      else if (strcmp(name,"ExtrapolationAnalysis")==0) return ExtrapolationAnalysisEnum;
 	      else if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum;
-	      else if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum;
+         else stage=10;
+   }
+   if(stage==10){
+	      if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum;
 	      else if (strcmp(name,"FSApproximation")==0) return FSApproximationEnum;
 	      else if (strcmp(name,"FSSolver")==0) return FSSolverEnum;
 	      else if (strcmp(name,"FSpressure")==0) return FSpressureEnum;
 	      else if (strcmp(name,"FSvelocity")==0) return FSvelocityEnum;
-         else stage=10;
-   }
-   if(stage==10){
-	      if (strcmp(name,"FemModel")==0) return FemModelEnum;
+	      else if (strcmp(name,"FemModel")==0) return FemModelEnum;
 	      else if (strcmp(name,"FileParam")==0) return FileParamEnum;
 	      else if (strcmp(name,"FixedTimestepping")==0) return FixedTimesteppingEnum;
@@ -1239,13 +1244,13 @@
 	      else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
 	      else if (strcmp(name,"MaxVy")==0) return MaxVyEnum;
-	      else if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
+         else stage=11;
+   }
+   if(stage==11){
+	      if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
 	      else if (strcmp(name,"Melange")==0) return MelangeEnum;
 	      else if (strcmp(name,"MeltingAnalysis")==0) return MeltingAnalysisEnum;
 	      else if (strcmp(name,"MeshElements")==0) return MeshElementsEnum;
 	      else if (strcmp(name,"MeshX")==0) return MeshXEnum;
-         else stage=11;
-   }
-   if(stage==11){
-	      if (strcmp(name,"MeshY")==0) return MeshYEnum;
+	      else if (strcmp(name,"MeshY")==0) return MeshYEnum;
 	      else if (strcmp(name,"MinVel")==0) return MinVelEnum;
 	      else if (strcmp(name,"MinVx")==0) return MinVxEnum;
@@ -1362,13 +1367,13 @@
 	      else if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum;
 	      else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
-	      else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
+         else stage=12;
+   }
+   if(stage==12){
+	      if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
 	      else if (strcmp(name,"Tetra")==0) return TetraEnum;
 	      else if (strcmp(name,"TetraInput")==0) return TetraInputEnum;
 	      else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
 	      else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
-         else stage=12;
-   }
-   if(stage==12){
-	      if (strcmp(name,"ThicknessErrorEstimator")==0) return ThicknessErrorEstimatorEnum;
+	      else if (strcmp(name,"ThicknessErrorEstimator")==0) return ThicknessErrorEstimatorEnum;
 	      else if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum;
 	      else if (strcmp(name,"TotalCalvingMeltingFluxLevelset")==0) return TotalCalvingMeltingFluxLevelsetEnum;
Index: /issm/trunk-jpl/test/NightlyRun/test243.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test243.m	(revision 25806)
+++ /issm/trunk-jpl/test/NightlyRun/test243.m	(revision 25807)
@@ -30,5 +30,6 @@
 md.smb.requested_outputs={'SmbDz','SmbT','SmbD','SmbRe','SmbGdn','SmbGsp','SmbEC',...
 	'SmbA','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF',...
-	'SmbMeanULW','SmbNetLW','SmbNetSW'};
+	'SmbMeanULW','SmbNetLW','SmbNetSW','SmbAccumulatedMassBalance','SmbAccumulatedRunoff',...
+	'SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation'};
 
 %only run smb core: 
@@ -52,6 +53,6 @@
 
 %Fields and tolerances to track changes
-field_names      ={'Layers','SmbDz','SmbT' ,'SmbD' ,'SmbRe','SmbGdn','SmbGsp','SmbA' ,'SmbEC','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF','SmbMeanULW','SmbNetLW','SmbNetSW'};
-field_tolerances ={1e-12,2e-12,1e-12,1e-11,1e-11,2e-11,1e-11,1e-12,1e-11,1e-12,1e-12,1e-12,1e-11,2e-11,2e-11,1e-11,9e-10,2e-11};
+field_names      ={'Layers','SmbDz','SmbT' ,'SmbD' ,'SmbRe','SmbGdn','SmbGsp','SmbA' ,'SmbEC','SmbMassBalance','SmbMAdd','SmbDzAdd','SmbFAC','SmbMeanSHF','SmbMeanLHF','SmbMeanULW','SmbNetLW','SmbNetSW','SmbAccumulatedMassBalance','SmbAccumulatedRunoff','SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation'};
+field_tolerances ={1e-12,2e-12,1e-12,1e-11,1e-11,2e-11,1e-11,1e-12,1e-11,1e-12,1e-12,1e-12,1e-11,2e-11,2e-11,1e-11,9e-10,2e-11,1e-11,9e-10,2e-11,1e-11,1e-11,1e-11,1e-11,1e-11,};
 
 field_values={...
@@ -73,4 +74,9 @@
 	(md.results.TransientSolution(end).SmbMeanULW(1)),...
 	(md.results.TransientSolution(end).SmbNetLW(1)),...
-	(md.results.TransientSolution(end).SmbNetSW(1))
+	(md.results.TransientSolution(end).SmbNetSW(1)),...
+	(md.results.TransientSolution(end).SmbAccumulatedMassBalance(1)),...
+	(md.results.TransientSolution(end).SmbAccumulatedRunoff(1)),...
+	(md.results.TransientSolution(end).SmbAccumulatedMelt(1)),...
+	(md.results.TransientSolution(end).SmbAccumulatedEC(1)),...
+	(md.results.TransientSolution(end).SmbAccumulatedPrecipitation(1))
 };
Index: /issm/trunk-jpl/test/NightlyRun/test243.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test243.py	(revision 25806)
+++ /issm/trunk-jpl/test/NightlyRun/test243.py	(revision 25807)
@@ -47,5 +47,6 @@
     'SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbEC',
     'SmbA', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC', 'SmbMeanSHF', 'SmbMeanLHF',
-    'SmbMeanULW', 'SmbNetLW', 'SmbNetSW'
+    'SmbMeanULW', 'SmbNetLW', 'SmbNetSW','SmbAccumulatedMassBalance','SmbAccumulatedRunoff',
+    'SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation'
     ]
 
@@ -69,6 +70,6 @@
 
 #Fields and tolerances to track changes
-field_names = ['Layers', 'SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbA', 'SmbEC', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC', 'SmbMeanSHF', 'SmbMeanLHF', 'SmbMeanULW', 'SmbNetLW', 'SmbNetSW']
-field_tolerances = [1e-12, 2e-12, 1e-12, 1e-11, 1e-11, 2e-11, 1e-11, 1e-12, 1e-11, 1e-12, 1e-12, 1e-12, 1e-11, 2e-11, 2e-11, 1e-11, 9e-10, 2e-11]
+field_names = ['Layers', 'SmbDz', 'SmbT', 'SmbD', 'SmbRe', 'SmbGdn', 'SmbGsp', 'SmbA', 'SmbEC', 'SmbMassBalance', 'SmbMAdd', 'SmbDzAdd', 'SmbFAC', 'SmbMeanSHF', 'SmbMeanLHF', 'SmbMeanULW', 'SmbNetLW', 'SmbNetSW', 'SmbAccumulatedMassBalance','SmbAccumulatedRunoff','SmbAccumulatedMelt','SmbAccumulatedEC','SmbAccumulatedPrecipitation']
+field_tolerances = [1e-12, 2e-12, 1e-12, 1e-11, 1e-11, 2e-11, 1e-11, 1e-12, 1e-11, 1e-12, 1e-12, 1e-12, 1e-11, 2e-11, 2e-11, 1e-11, 9e-10, 2e-11, 1e-11, 1e-11, 1e-11, 1e-11, 1e-11]
 # Shape is different in python solution (fixed using reshape) which can cause test failure
 field_values = [
@@ -90,4 +91,9 @@
     md.results.TransientSolution[-1].SmbMeanULW[0],
     md.results.TransientSolution[-1].SmbNetLW[0],
-    md.results.TransientSolution[-1].SmbNetSW[0]
+    md.results.TransientSolution[-1].SmbNetSW[0],
+    md.results.TransientSolution[-1].SmbAccumulatedMassBalance[0],
+    md.results.TransientSolution[-1].SmbAccumulatedRunoff[0],
+    md.results.TransientSolution[-1].SmbAccumulatedMelt[0],
+    md.results.TransientSolution[-1].SmbAccumulatedEC[0],
+    md.results.TransientSolution[-1].SmbAccumulatedPrecipitation[0]
     ]
