Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 20208)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 20209)
@@ -286,4 +286,6 @@
 		virtual int        TensorInterpolation()=0;
 		virtual IssmDouble TimeAdapt()=0;
+		virtual IssmDouble TotalFloatingBmb(void)=0;
+		virtual IssmDouble TotalGroundedBmb(void)=0;
 		virtual IssmDouble TotalSmb(void)=0;
 		virtual void       Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finite_element)=0;
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 20208)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 20209)
@@ -2636,4 +2636,62 @@
 	return dt;
 }/*}}}*/
+IssmDouble Penta::TotalFloatingBmb(void){/*{{{*/
+
+	/*The fbmb[Gt yr-1] of one element is area[m2] * floating basal melt [ m ice yr^-1] * rho_ice [kg m-3] / 1e+10^12 */
+	IssmDouble base,fbmb,rho_ice;
+	IssmDouble Total_Fbmb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Get material parameters :*/
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+	if(!IsIceInElement() || !IsOnBase()) return 0.;
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*First calculate the area of the base (cross section triangle)
+	 * http://en.wikipedia.org/wiki/Triangle
+	 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+	base = 1./2. * fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+
+	/*Now get the average Floating melt rate over the element*/
+	Input* fbmb_input = inputs->GetInput(BasalforcingsFloatingiceMeltingRateEnum); _assert_(fbmb_input);
+
+	fbmb_input->GetInputAverage(&fbmb);
+	Total_Fbmb=rho_ice*base*fbmb;// floating melt rate on element in kg s-1
+
+	/*Return: */
+	return Total_Fbmb;
+}
+/*}}}*/
+IssmDouble Penta::TotalGroundedBmb(void){/*{{{*/
+
+	/*The grounded ice melting rate [Gt yr-1] of one element is area[m2] * grounded melt [ m ice yr^-1] * rho_ice [kg m-3] / 1e+10^12 */
+	IssmDouble base,gbmb,rho_ice;
+	IssmDouble Total_Gbmb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Get material parameters :*/
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+	if(!IsIceInElement() || !IsOnBase()) return 0.;
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*First calculate the area of the base (cross section triangle)
+	 * http://en.wikipedia.org/wiki/Triangle
+	 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+	base = 1./2. * fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));
+
+	/*Now get the average grounded melt over the element*/
+	Input* gbmb_input = inputs->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(gbmb_input);
+
+	gbmb_input->GetInputAverage(&gbmb);
+	Total_Gbmb=rho_ice*base*gbmb;// grounded melt on element in kg s-1
+
+	/*Return: */
+	return Total_Gbmb;
+}
+/*}}}*/
 IssmDouble Penta::TotalSmb(void){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 20208)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.h	(revision 20209)
@@ -159,4 +159,6 @@
 		int            TensorInterpolation(){_error_("not implemented yet");};
 		IssmDouble     TimeAdapt();
+		IssmDouble     TotalFloatingBmb(void);
+		IssmDouble     TotalGroundedBmb(void);
 		IssmDouble     TotalSmb(void);
 		void           Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
Index: /issm/trunk-jpl/src/c/classes/Elements/Seg.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 20208)
+++ /issm/trunk-jpl/src/c/classes/Elements/Seg.h	(revision 20209)
@@ -149,4 +149,6 @@
 		int         TensorInterpolation(void){_error_("not implemented yet");};
 		IssmDouble  TimeAdapt(){_error_("not implemented yet");};
+		IssmDouble  TotalFloatingBmb(void){_error_("not implemented yet");};
+		IssmDouble  TotalGroundedBmb(void){_error_("not implemented yet");};
 		IssmDouble  TotalSmb(void){_error_("not implemented yet");};
 		void        Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement){_error_("not implemented yet");};
Index: /issm/trunk-jpl/src/c/classes/Elements/Tetra.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 20208)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tetra.h	(revision 20209)
@@ -156,4 +156,6 @@
 		int         TensorInterpolation(void);
 		IssmDouble  TimeAdapt(){_error_("not implemented yet");};
+		IssmDouble  TotalFloatingBmb(void){_error_("not implemented yet");};
+		IssmDouble  TotalGroundedBmb(void){_error_("not implemented yet");};
 		IssmDouble  TotalSmb(void){_error_("not implemented yet");};
 		void        Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 20208)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 20209)
@@ -3068,4 +3068,60 @@
 
 	return dt;
+}
+/*}}}*/
+IssmDouble Tria::TotalFloatingBmb(void){/*{{{*/
+
+	/*The fbmb[kg yr-1] of one element is area[m2] * melting_rate [kg m^-2 yr^-1]*/
+	IssmDouble base,fbmb,rho_ice;
+	IssmDouble Total_Fbmb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Get material parameters :*/
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+   if(!IsIceInElement())return 0;
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*First calculate the area of the base (cross section triangle)
+	 * http://en.wikipedia.org/wiki/Triangle
+	 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+	base = 1./2. * fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));	// area of element in m2
+
+	/*Now get the average SMB over the element*/
+	Input* fbmb_input = inputs->GetInput(BasalforcingsFloatingiceMeltingRateEnum); _assert_(fbmb_input);
+	fbmb_input->GetInputAverage(&fbmb);																								// average melting rate on element in m ice s-1
+   Total_Fbmb=rho_ice*base*fbmb;																											// melting rate on element in kg s-1
+
+	/*Return: */
+	return Total_Fbmb;
+}
+/*}}}*/
+IssmDouble Tria::TotalGroundedBmb(void){/*{{{*/
+
+	/*The gbmb[kg yr-1] of one element is area[m2] * gounded melting rate [kg m^-2 yr^-1]*/
+	IssmDouble base,gbmb,rho_ice;
+	IssmDouble Total_Gbmb=0;
+	IssmDouble xyz_list[NUMVERTICES][3];
+
+	/*Get material parameters :*/
+	rho_ice=matpar->GetMaterialParameter(MaterialsRhoIceEnum);
+
+   if(!IsIceInElement())return 0;
+
+	::GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES);
+
+	/*First calculate the area of the base (cross section triangle)
+	 * http://en.wikipedia.org/wiki/Triangle
+	 * base = 1/2 abs((xA-xC)(yB-yA)-(xA-xB)(yC-yA))*/
+	base = 1./2. * fabs((xyz_list[0][0]-xyz_list[2][0])*(xyz_list[1][1]-xyz_list[0][1]) - (xyz_list[0][0]-xyz_list[1][0])*(xyz_list[2][1]-xyz_list[0][1]));	// area of element in m2
+
+	/*Now get the average grounded melting rate over the element*/
+	Input* gbmb_input = inputs->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(gbmb_input);
+	gbmb_input->GetInputAverage(&gbmb);																								// average smb on element in m ice s-1
+   Total_Gbmb=rho_ice*base*gbmb;																											// smb on element in kg s-1
+
+	/*Return: */
+	return Total_Gbmb;
 }
 /*}}}*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 20208)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.h	(revision 20209)
@@ -130,4 +130,6 @@
 		int         TensorInterpolation();
 		IssmDouble  TimeAdapt();
+		IssmDouble  TotalFloatingBmb(void);
+		IssmDouble  TotalGroundedBmb(void);
 		IssmDouble  TotalSmb(void);
 		void        Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finitelement);
Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 20208)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 20209)
@@ -952,4 +952,6 @@
 		case DragCoefficientAbsGradientEnum:DragCoefficientAbsGradientx(responses, elements,nodes, vertices, loads, materials, parameters); break;
 		case BalancethicknessMisfitEnum:   BalancethicknessMisfitx(responses); break;
+		case TotalFloatingBmbEnum:			  this->TotalFloatingBmbx(responses); break;
+		case TotalGroundedBmbEnum:			  this->TotalGroundedBmbx(responses); break;
 		case TotalSmbEnum:					  this->TotalSmbx(responses); break;
 		case MaterialsRheologyBbarEnum:    this->ElementResponsex(responses,MaterialsRheologyBbarEnum); break;
@@ -1026,4 +1028,6 @@
 					case MaxAbsVzEnum:                 this->MaxAbsVzx(&double_result);                 break;
 					case MassFluxEnum:                 this->MassFluxx(&double_result);                 break;
+					case TotalFloatingBmbEnum:         this->TotalFloatingBmbx(&double_result);         break;
+					case TotalGroundedBmbEnum:         this->TotalGroundedBmbx(&double_result);         break;
 					case TotalSmbEnum:                 this->TotalSmbx(&double_result);                 break;
 
@@ -1570,4 +1574,36 @@
 
 }/*}}}*/
+void FemModel::TotalFloatingBmbx(IssmDouble* pFbmb){/*{{{*/
+
+	IssmDouble local_fbmb = 0;
+	IssmDouble total_fbmb;
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		local_fbmb+=element->TotalFloatingBmb();
+	}
+	ISSM_MPI_Reduce(&local_fbmb,&total_fbmb,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_fbmb,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pFbmb=total_fbmb;
+
+}/*}}}*/
+void FemModel::TotalGroundedBmbx(IssmDouble* pGbmb){/*{{{*/
+
+	IssmDouble local_gbmb = 0;
+	IssmDouble total_gbmb;
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		local_gbmb+=element->TotalGroundedBmb();
+	}
+	ISSM_MPI_Reduce(&local_gbmb,&total_gbmb,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_gbmb,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pGbmb=total_gbmb;
+
+}/*}}}*/
 void FemModel::TotalSmbx(IssmDouble* pSmb){/*{{{*/
 
Index: /issm/trunk-jpl/src/c/classes/FemModel.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 20208)
+++ /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 20209)
@@ -77,4 +77,6 @@
 		void MinVyx(IssmDouble* presponse);
 		void MinVzx(IssmDouble* presponse);
+		void TotalFloatingBmbx(IssmDouble* pFbmb);
+		void TotalGroundedBmbx(IssmDouble* pGbmb);
 		void TotalSmbx(IssmDouble* pSmb);
 		void Divergencex(IssmDouble* pdiv);
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 20208)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 20209)
@@ -944,4 +944,6 @@
 	IceVolumeEnum,
 	IceVolumeAboveFloatationEnum,
+	TotalFloatingBmbEnum,
+	TotalGroundedBmbEnum,
 	TotalSmbEnum,
 	/*}}}*/
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 20208)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 20209)
@@ -920,4 +920,6 @@
 		case IceVolumeEnum : return "IceVolume";
 		case IceVolumeAboveFloatationEnum : return "IceVolumeAboveFloatation";
+		case TotalFloatingBmbEnum : return "TotalFloatingBmb";
+		case TotalGroundedBmbEnum : return "TotalGroundedBmb";
 		case TotalSmbEnum : return "TotalSmb";
 		case AbsoluteEnum : return "Absolute";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 20208)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 20209)
@@ -941,4 +941,6 @@
 	      else if (strcmp(name,"IceVolume")==0) return IceVolumeEnum;
 	      else if (strcmp(name,"IceVolumeAboveFloatation")==0) return IceVolumeAboveFloatationEnum;
+	      else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum;
+	      else if (strcmp(name,"TotalGroundedBmb")==0) return TotalGroundedBmbEnum;
 	      else if (strcmp(name,"TotalSmb")==0) return TotalSmbEnum;
 	      else if (strcmp(name,"Absolute")==0) return AbsoluteEnum;
@@ -996,10 +998,10 @@
 	      else if (strcmp(name,"Sset")==0) return SsetEnum;
 	      else if (strcmp(name,"Verbose")==0) return VerboseEnum;
-	      else if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
-	      else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
          else stage=9;
    }
    if(stage==9){
-	      if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
+	      if (strcmp(name,"TriangleInterp")==0) return TriangleInterpEnum;
+	      else if (strcmp(name,"BilinearInterp")==0) return BilinearInterpEnum;
+	      else if (strcmp(name,"NearestInterp")==0) return NearestInterpEnum;
 	      else if (strcmp(name,"XY")==0) return XYEnum;
 	      else if (strcmp(name,"XYZ")==0) return XYZEnum;
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.js
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.js	(revision 20208)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.js	(revision 20209)
@@ -905,102 +905,104 @@
 function IceVolumeEnum(){ return 901;}
 function IceVolumeAboveFloatationEnum(){ return 902;}
-function TotalSmbEnum(){ return 903;}
-function AbsoluteEnum(){ return 904;}
-function IncrementalEnum(){ return 905;}
-function AugmentedLagrangianREnum(){ return 906;}
-function AugmentedLagrangianRhopEnum(){ return 907;}
-function AugmentedLagrangianRlambdaEnum(){ return 908;}
-function AugmentedLagrangianRholambdaEnum(){ return 909;}
-function AugmentedLagrangianThetaEnum(){ return 910;}
-function NoneEnum(){ return 911;}
-function AggressiveMigrationEnum(){ return 912;}
-function SoftMigrationEnum(){ return 913;}
-function SubelementMigrationEnum(){ return 914;}
-function SubelementMigration2Enum(){ return 915;}
-function ContactEnum(){ return 916;}
-function GroundingOnlyEnum(){ return 917;}
-function MaskGroundediceLevelsetEnum(){ return 918;}
-function GaussSegEnum(){ return 919;}
-function GaussTriaEnum(){ return 920;}
-function GaussTetraEnum(){ return 921;}
-function GaussPentaEnum(){ return 922;}
-function FSSolverEnum(){ return 923;}
-function AdjointEnum(){ return 924;}
-function ColinearEnum(){ return 925;}
-function ControlSteadyEnum(){ return 926;}
-function FsetEnum(){ return 927;}
-function Gradient1Enum(){ return 928;}
-function Gradient2Enum(){ return 929;}
-function Gradient3Enum(){ return 930;}
-function GradientEnum(){ return 931;}
-function GroundinglineMigrationEnum(){ return 932;}
-function GsetEnum(){ return 933;}
-function IndexEnum(){ return 934;}
-function IndexedEnum(){ return 935;}
-function IntersectEnum(){ return 936;}
-function NodalEnum(){ return 937;}
-function OldGradientEnum(){ return 938;}
-function OutputBufferPointerEnum(){ return 939;}
-function OutputBufferSizePointerEnum(){ return 940;}
-function OutputFilePointerEnum(){ return 941;}
-function ToolkitsFileNameEnum(){ return 942;}
-function RootPathEnum(){ return 943;}
-function OutputFileNameEnum(){ return 944;}
-function InputFileNameEnum(){ return 945;}
-function LockFileNameEnum(){ return 946;}
-function RestartFileNameEnum(){ return 947;}
-function ToolkitsOptionsAnalysesEnum(){ return 948;}
-function ToolkitsOptionsStringsEnum(){ return 949;}
-function QmuErrNameEnum(){ return 950;}
-function QmuInNameEnum(){ return 951;}
-function QmuOutNameEnum(){ return 952;}
-function RegularEnum(){ return 953;}
-function ScaledEnum(){ return 954;}
-function SeparateEnum(){ return 955;}
-function SsetEnum(){ return 956;}
-function VerboseEnum(){ return 957;}
-function TriangleInterpEnum(){ return 958;}
-function BilinearInterpEnum(){ return 959;}
-function NearestInterpEnum(){ return 960;}
-function XYEnum(){ return 961;}
-function XYZEnum(){ return 962;}
-function DenseEnum(){ return 963;}
-function MpiDenseEnum(){ return 964;}
-function MpiSparseEnum(){ return 965;}
-function SeqEnum(){ return 966;}
-function MpiEnum(){ return 967;}
-function MumpsEnum(){ return 968;}
-function GslEnum(){ return 969;}
-function OptionEnum(){ return 970;}
-function GenericOptionEnum(){ return 971;}
-function OptionCellEnum(){ return 972;}
-function OptionStructEnum(){ return 973;}
-function CuffeyEnum(){ return 974;}
-function PatersonEnum(){ return 975;}
-function ArrheniusEnum(){ return 976;}
-function LliboutryDuvalEnum(){ return 977;}
-function TransientIslevelsetEnum(){ return 978;}
-function SpcLevelsetEnum(){ return 979;}
-function ExtrapolationVariableEnum(){ return 980;}
-function IceMaskNodeActivationEnum(){ return 981;}
-function LevelsetfunctionSlopeXEnum(){ return 982;}
-function LevelsetfunctionSlopeYEnum(){ return 983;}
-function LevelsetfunctionPicardEnum(){ return 984;}
-function SealevelriseSolutionEnum(){ return 985;}
-function SealevelriseAnalysisEnum(){ return 986;}
-function SealevelEnum(){ return 987;}
-function SealevelriseDeltathicknessEnum(){ return 988;}
-function SealevelriseMaxiterEnum(){ return 989;}
-function SealevelriseReltolEnum(){ return 990;}
-function SealevelriseAbstolEnum(){ return 991;}
-function SealevelriseLoveHEnum(){ return 992;}
-function SealevelriseLoveKEnum(){ return 993;}
-function SealevelriseRigidEnum(){ return 994;}
-function SealevelriseElasticEnum(){ return 995;}
-function SealevelriseEustaticEnum(){ return 996;}
-function SealevelriseGElasticEnum(){ return 997;}
-function SealevelriseDegaccEnum(){ return 998;}
-function SealevelriseTransitionsEnum(){ return 999;}
-function SealevelriseRequestedOutputsEnum(){ return 1000;}
-function SealevelriseNumRequestedOutputsEnum(){ return 1001;}
-function MaximumNumberOfDefinitionsEnum(){ return 1002;}
+function TotalFloatingBmbEnum(){ return 903;}
+function TotalGroundedBmbEnum(){ return 904;}
+function TotalSmbEnum(){ return 905;}
+function AbsoluteEnum(){ return 906;}
+function IncrementalEnum(){ return 907;}
+function AugmentedLagrangianREnum(){ return 908;}
+function AugmentedLagrangianRhopEnum(){ return 909;}
+function AugmentedLagrangianRlambdaEnum(){ return 910;}
+function AugmentedLagrangianRholambdaEnum(){ return 911;}
+function AugmentedLagrangianThetaEnum(){ return 912;}
+function NoneEnum(){ return 913;}
+function AggressiveMigrationEnum(){ return 914;}
+function SoftMigrationEnum(){ return 915;}
+function SubelementMigrationEnum(){ return 916;}
+function SubelementMigration2Enum(){ return 917;}
+function ContactEnum(){ return 918;}
+function GroundingOnlyEnum(){ return 919;}
+function MaskGroundediceLevelsetEnum(){ return 920;}
+function GaussSegEnum(){ return 921;}
+function GaussTriaEnum(){ return 922;}
+function GaussTetraEnum(){ return 923;}
+function GaussPentaEnum(){ return 924;}
+function FSSolverEnum(){ return 925;}
+function AdjointEnum(){ return 926;}
+function ColinearEnum(){ return 927;}
+function ControlSteadyEnum(){ return 928;}
+function FsetEnum(){ return 929;}
+function Gradient1Enum(){ return 930;}
+function Gradient2Enum(){ return 931;}
+function Gradient3Enum(){ return 932;}
+function GradientEnum(){ return 933;}
+function GroundinglineMigrationEnum(){ return 934;}
+function GsetEnum(){ return 935;}
+function IndexEnum(){ return 936;}
+function IndexedEnum(){ return 937;}
+function IntersectEnum(){ return 938;}
+function NodalEnum(){ return 939;}
+function OldGradientEnum(){ return 940;}
+function OutputBufferPointerEnum(){ return 941;}
+function OutputBufferSizePointerEnum(){ return 942;}
+function OutputFilePointerEnum(){ return 943;}
+function ToolkitsFileNameEnum(){ return 944;}
+function RootPathEnum(){ return 945;}
+function OutputFileNameEnum(){ return 946;}
+function InputFileNameEnum(){ return 947;}
+function LockFileNameEnum(){ return 948;}
+function RestartFileNameEnum(){ return 949;}
+function ToolkitsOptionsAnalysesEnum(){ return 950;}
+function ToolkitsOptionsStringsEnum(){ return 951;}
+function QmuErrNameEnum(){ return 952;}
+function QmuInNameEnum(){ return 953;}
+function QmuOutNameEnum(){ return 954;}
+function RegularEnum(){ return 955;}
+function ScaledEnum(){ return 956;}
+function SeparateEnum(){ return 957;}
+function SsetEnum(){ return 958;}
+function VerboseEnum(){ return 959;}
+function TriangleInterpEnum(){ return 960;}
+function BilinearInterpEnum(){ return 961;}
+function NearestInterpEnum(){ return 962;}
+function XYEnum(){ return 963;}
+function XYZEnum(){ return 964;}
+function DenseEnum(){ return 965;}
+function MpiDenseEnum(){ return 966;}
+function MpiSparseEnum(){ return 967;}
+function SeqEnum(){ return 968;}
+function MpiEnum(){ return 969;}
+function MumpsEnum(){ return 970;}
+function GslEnum(){ return 971;}
+function OptionEnum(){ return 972;}
+function GenericOptionEnum(){ return 973;}
+function OptionCellEnum(){ return 974;}
+function OptionStructEnum(){ return 975;}
+function CuffeyEnum(){ return 976;}
+function PatersonEnum(){ return 977;}
+function ArrheniusEnum(){ return 978;}
+function LliboutryDuvalEnum(){ return 979;}
+function TransientIslevelsetEnum(){ return 980;}
+function SpcLevelsetEnum(){ return 981;}
+function ExtrapolationVariableEnum(){ return 982;}
+function IceMaskNodeActivationEnum(){ return 983;}
+function LevelsetfunctionSlopeXEnum(){ return 984;}
+function LevelsetfunctionSlopeYEnum(){ return 985;}
+function LevelsetfunctionPicardEnum(){ return 986;}
+function SealevelriseSolutionEnum(){ return 987;}
+function SealevelriseAnalysisEnum(){ return 988;}
+function SealevelEnum(){ return 989;}
+function SealevelriseDeltathicknessEnum(){ return 990;}
+function SealevelriseMaxiterEnum(){ return 991;}
+function SealevelriseReltolEnum(){ return 992;}
+function SealevelriseAbstolEnum(){ return 993;}
+function SealevelriseLoveHEnum(){ return 994;}
+function SealevelriseLoveKEnum(){ return 995;}
+function SealevelriseRigidEnum(){ return 996;}
+function SealevelriseElasticEnum(){ return 997;}
+function SealevelriseEustaticEnum(){ return 998;}
+function SealevelriseGElasticEnum(){ return 999;}
+function SealevelriseDegaccEnum(){ return 1000;}
+function SealevelriseTransitionsEnum(){ return 1001;}
+function SealevelriseRequestedOutputsEnum(){ return 1002;}
+function SealevelriseNumRequestedOutputsEnum(){ return 1003;}
+function MaximumNumberOfDefinitionsEnum(){ return 1004;}
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 20208)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 20209)
@@ -912,4 +912,6 @@
 def IceVolumeEnum(): return StringToEnum("IceVolume")[0]
 def IceVolumeAboveFloatationEnum(): return StringToEnum("IceVolumeAboveFloatation")[0]
+def TotalFloatingBmbEnum(): return StringToEnum("TotalFloatingBmb")[0]
+def TotalGroundedBmbEnum(): return StringToEnum("TotalGroundedBmb")[0]
 def TotalSmbEnum(): return StringToEnum("TotalSmb")[0]
 def AbsoluteEnum(): return StringToEnum("Absolute")[0]
Index: /issm/trunk-jpl/src/m/enum/TotalFloatingBmbEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/TotalFloatingBmbEnum.m	(revision 20209)
+++ /issm/trunk-jpl/src/m/enum/TotalFloatingBmbEnum.m	(revision 20209)
@@ -0,0 +1,11 @@
+function macro=TotalFloatingBmbEnum()
+%TOTALFLOATINGBMBENUM - Enum of TotalFloatingBmb
+%
+%   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=TotalFloatingBmbEnum()
+
+macro=StringToEnum('TotalFloatingBmb');
Index: /issm/trunk-jpl/src/m/enum/TotalGroundedBmbEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/TotalGroundedBmbEnum.m	(revision 20209)
+++ /issm/trunk-jpl/src/m/enum/TotalGroundedBmbEnum.m	(revision 20209)
@@ -0,0 +1,11 @@
+function macro=TotalGroundedBmbEnum()
+%TOTALGROUNDEDBMBENUM - Enum of TotalGroundedBmb
+%
+%   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=TotalGroundedBmbEnum()
+
+macro=StringToEnum('TotalGroundedBmb');
Index: /issm/trunk-jpl/test/NightlyRun/test208.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test208.m	(revision 20208)
+++ /issm/trunk-jpl/test/NightlyRun/test208.m	(revision 20209)
@@ -5,10 +5,14 @@
 md=setflowequation(md,'SSA','all');
 md.cluster=generic('name',oshostname(),'np',3);
-md.transient.requested_outputs={'default','GroundedArea'};
+md.transient.requested_outputs={'default','GroundedArea','TotalGroundedBmb','TotalFloatingBmb'};
 md=solve(md,TransientSolutionEnum());
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3'};
-field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','TotalGroundedBmb1','TotalFloatingBmb1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','TotalGroundedBmb2','TotalFloatingBmb2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','TotalGroundedBmb3','TotalFloatingBmb3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
 field_values={...
 	(md.results.TransientSolution(1).Vx),...
@@ -19,4 +23,6 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -26,4 +32,6 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -33,3 +41,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test208.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test208.py	(revision 20208)
+++ /issm/trunk-jpl/test/NightlyRun/test208.py	(revision 20209)
@@ -16,4 +16,5 @@
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',3)
+md.transient.requested_outputs=['default','GroundedArea','TotalFloatingBmb','TotalGroundedBmb']
 md=solve(md,TransientSolutionEnum())
 
@@ -21,6 +22,6 @@
 # Fields and tolerances to track changes
 
-field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3']
-field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','TotalGroundedBmb1','TotalFloatingBmb1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','TotalGroundedBmb2','TotalFloatingBmb2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','TotalGroundedBmb3','TotalFloatingBmb3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
 field_values=[\
 	md.results.TransientSolution[0].Vx,\
@@ -31,4 +32,6 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
+	md.results.TransientSolution[0].TotalGroundedBmb,\
+	md.results.TransientSolution[0].TotalFloatingBmb,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -38,4 +41,6 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
+	md.results.TransientSolution[1].TotalGroundedBmb,\
+	md.results.TransientSolution[1].TotalFloatingBmb,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -45,3 +50,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
+	md.results.TransientSolution[2].TotalGroundedBmb,\
+	md.results.TransientSolution[2].TotalFloatingBmb,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test317.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test317.m	(revision 20208)
+++ /issm/trunk-jpl/test/NightlyRun/test317.m	(revision 20209)
@@ -6,14 +6,14 @@
 md=setflowequation(md,'HO','all');
 md.cluster=generic('name',oshostname(),'np',3);
-md.transient.requested_outputs={'default','GroundedArea','FloatingArea'};
+md.transient.requested_outputs={'default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb'};
 md=solve(md,TransientSolutionEnum());
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1','FloatingArea1',...
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2','FloatingArea2',...
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3','FloatingArea3'};
-field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,...
-	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,...
-	1e-09,5e-10,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12};
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1'...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2',...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3','FloatingArea3','TotalFloatingBmb3','TotalGroundedBmb3'};
+field_tolerances={1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12,...
+	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12,...
+	1e-09,5e-10,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12};
 field_values={...
 	(md.results.TransientSolution(1).Vx),...
@@ -29,4 +29,6 @@
 	(md.results.TransientSolution(1).GroundedArea),...
 	(md.results.TransientSolution(1).FloatingArea),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -41,4 +43,6 @@
 	(md.results.TransientSolution(2).GroundedArea),...
 	(md.results.TransientSolution(2).FloatingArea),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -53,3 +57,5 @@
 	(md.results.TransientSolution(3).GroundedArea),...
 	(md.results.TransientSolution(3).FloatingArea),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test317.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test317.py	(revision 20208)
+++ /issm/trunk-jpl/test/NightlyRun/test317.py	(revision 20209)
@@ -15,14 +15,14 @@
 md=setflowequation(md,'HO','all')
 md.cluster=generic('name',oshostname(),'np',3)
-md.transient.requested_outputs=['default','GroundedArea','FloatingArea']
+md.transient.requested_outputs=['default','GroundedArea','FloatingArea','TotalFloatingBmb','TotalGroundedBmb']
 md=solve(md,TransientSolutionEnum())
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1','FloatingArea1'\
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2','FloatingArea2',\
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3','FloatingArea']
-field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,\
-		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,\
-		1e-09,5e-10,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12]
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','GroundedArea1','FloatingArea1','TotalFloatingBmb1','TotalGroundedBmb1'\
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','GroundedArea2','FloatingArea2','TotalFloatingBmb2','TotalGroundedBmb2',\
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','GroundedArea3','FloatingArea3','TotalFloatingBmb2','TotalGroundedBmb2']
+field_tolerances=[1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12,\
+		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12,\
+		1e-09,5e-10,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,1e-12,1e-12,1e-12,1e-12]
 field_values=[\
 	md.results.TransientSolution[0].Vx,\
@@ -38,4 +38,6 @@
 	md.results.TransientSolution[0].GroundedArea,\
 	md.results.TransientSolution[0].FloatingArea,\
+	md.results.TransientSolution[0].TotalFloatingBmb,\
+	md.results.TransientSolution[0].TotalGroundedBmb,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -50,4 +52,6 @@
 	md.results.TransientSolution[1].GroundedArea,\
 	md.results.TransientSolution[1].FloatingArea,\
+	md.results.TransientSolution[1].TotalFloatingBmb,\
+	md.results.TransientSolution[1].TotalGroundedBmb,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -62,3 +66,5 @@
 	md.results.TransientSolution[2].GroundedArea,\
 	md.results.TransientSolution[2].FloatingArea,\
+	md.results.TransientSolution[3].TotalFloatingBmb,\
+	md.results.TransientSolution[3].TotalGroundedBmb,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test408.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test408.m	(revision 20208)
+++ /issm/trunk-jpl/test/NightlyRun/test408.m	(revision 20209)
@@ -5,12 +5,14 @@
 md=setflowequation(md,'SSA','all');
 md.cluster=generic('name',oshostname(),'np',3);
-md.transient.requested_outputs={'default','GroundedArea'};
+md.transient.requested_outputs={'default','GroundedArea','TotalFloatingBmb','TotalGroundedBmb'};
 md=solve(md,TransientSolutionEnum());
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1',...
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2',...
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3'};
-field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','TotalFloatingBmb1','TotalGroundedBmb1',...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','TotalFloatingBmb2','TotalGroundedBmb2',...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','TotalFloatingBmb3','TotalGroundedBmb3'};
+field_tolerances={1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,...
+	1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13};
 field_values={...
 	(md.results.TransientSolution(1).Vx),...
@@ -22,4 +24,6 @@
 	(md.results.TransientSolution(1).Thickness),...
 	(md.results.TransientSolution(1).GroundedArea),...
+	(md.results.TransientSolution(1).TotalFloatingBmb),...
+	(md.results.TransientSolution(1).TotalGroundedBmb),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -30,4 +34,6 @@
 	(md.results.TransientSolution(2).Thickness),...
 	(md.results.TransientSolution(2).GroundedArea),...
+	(md.results.TransientSolution(2).TotalFloatingBmb),...
+	(md.results.TransientSolution(2).TotalGroundedBmb),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -38,3 +44,5 @@
 	(md.results.TransientSolution(3).Thickness),...
 	(md.results.TransientSolution(3).GroundedArea),...
+	(md.results.TransientSolution(3).TotalFloatingBmb),...
+	(md.results.TransientSolution(3).TotalGroundedBmb),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test408.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test408.py	(revision 20208)
+++ /issm/trunk-jpl/test/NightlyRun/test408.py	(revision 20209)
@@ -15,10 +15,10 @@
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',3)
-md.transient.requested_outputs=['default','GroundedArea']
+md.transient.requested_outputs=['default','GroundedArea','TotalFloatingBmb','TotalGroundedBmb']
 md=solve(md,TransientSolutionEnum())
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3']
-field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','GroundedArea1','TotalFloatingBmb1','TotalGroundedBmb1','Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','GroundedArea2','TotalFloatingBmb2','TotalGroundedBmb2','Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','GroundedArea3','TotalFloatingBmb3','TotalGroundedBmb3']
+field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13,1e-13]
 field_values=[\
 	md.results.TransientSolution[0].Vx,\
@@ -30,4 +30,6 @@
 	md.results.TransientSolution[0].Thickness,\
 	md.results.TransientSolution[0].GroundedArea,\
+	md.results.TransientSolution[0].TotalFloatingBmb,\
+	md.results.TransientSolution[0].TotalGroundedBmb,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -38,4 +40,6 @@
 	md.results.TransientSolution[1].Thickness,\
 	md.results.TransientSolution[1].GroundedArea,\
+	md.results.TransientSolution[2].TotalFloatingBmb,\
+	md.results.TransientSolution[2].TotalGroundedBmb,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -45,4 +49,6 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[1].GroundedArea,\
+	md.results.TransientSolution[2].GroundedArea,\
+	md.results.TransientSolution[2].TotalFloatingBmb,\
+	md.results.TransientSolution[2].TotalGroundedBmb,\
 	]
