Index: /issm/trunk-jpl/src/c/classes/Elements/Element.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 23884)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.h	(revision 23885)
@@ -240,4 +240,5 @@
 		virtual IssmDouble IceVolume(bool scaled)=0;
 		virtual IssmDouble IceVolumeAboveFloatation(bool scaled)=0;
+		virtual IssmDouble IcefrontMassFlux(bool scaled){_error_("not implemented");};
 		virtual void       InputDepthAverageAtBase(int enum_type,int average_enum_type)=0;
 		virtual void       InputExtrude(int input_enum,int start)=0;
Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 23884)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 23885)
@@ -1530,4 +1530,20 @@
 	
 }/*}}}*/
+void FemModel::IcefrontMassFluxx(IssmDouble* pM, bool scaled){/*{{{*/
+
+	IssmDouble local_mass_flux = 0;
+	IssmDouble total_mass_flux;
+
+	for(int i=0;i<this->elements->Size();i++){
+		Element* element=xDynamicCast<Element*>(this->elements->GetObjectByOffset(i));
+		local_mass_flux+=element->IcefrontMassFlux(scaled);
+	}
+	ISSM_MPI_Reduce(&local_mass_flux,&total_mass_flux,1,ISSM_MPI_DOUBLE,ISSM_MPI_SUM,0,IssmComm::GetComm() );
+	ISSM_MPI_Bcast(&total_mass_flux,1,ISSM_MPI_DOUBLE,0,IssmComm::GetComm());
+
+	/*Assign output pointers: */
+	*pM=total_mass_flux;
+
+}/*}}}*/
 void FemModel::IceMassx(IssmDouble* pM, bool scaled){/*{{{*/
 
@@ -2182,4 +2198,5 @@
 					case MaxDivergenceEnum:                  this->MaxDivergencex(&double_result);                  break;
 					case IceMassEnum:                        this->IceMassx(&double_result,false);                  break;
+					case IcefrontMassFluxEnum:               this->IcefrontMassFluxx(&double_result,false);         break;
 					case IceMassScaledEnum:                  this->IceMassx(&double_result,true);                   break;
 					case IceVolumeEnum:                      this->IceVolumex(&double_result,false);                break;
@@ -2210,23 +2227,23 @@
 					case TotalSmbScaledEnum:                 this->TotalSmbx(&double_result,true);                  break;
 
-			   /*Scalar control output*/
-				case SurfaceAbsVelMisfitEnum:       SurfaceAbsVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
-				case SurfaceRelVelMisfitEnum:       SurfaceRelVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
-				case SurfaceLogVelMisfitEnum:       SurfaceLogVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
-				case SurfaceLogVxVyMisfitEnum:      SurfaceLogVxVyMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
-				case SurfaceAverageVelMisfitEnum:   SurfaceAverageVelMisfitx(&double_result,this);                                                  break;
-				case ThicknessAbsMisfitEnum:        ThicknessAbsMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);         break;
-				case ThicknessAbsGradientEnum:      this->ThicknessAbsGradientx(&double_result);                                                    break;
-				case ThicknessAlongGradientEnum:    ThicknessAlongGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);     break;
-				case ThicknessAcrossGradientEnum:   ThicknessAcrossGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);    break;
-				case ThicknessPositiveEnum:         this->ThicknessPositivex(&double_result);                                                       break;
-				case RheologyBbarAbsGradientEnum:   RheologyBbarAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);    break;
-				case RheologyBAbsGradientEnum:      RheologyBAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
-				case RheologyBInitialguessMisfitEnum:  RheologyBInitialguessMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
-				case DragCoefficientAbsGradientEnum:DragCoefficientAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters); break;
-				case BalancethicknessMisfitEnum:    BalancethicknessMisfitx(&double_result);                                                        break;
-				case SurfaceAbsMisfitEnum:          SurfaceAbsMisfitx(&double_result); break;
-				case OmegaAbsGradientEnum:          OmegaAbsGradientx(&double_result); break;
-				case EtaDiffEnum:                   EtaDiffx(&double_result); break;
+					/*Scalar control output*/
+					case SurfaceAbsVelMisfitEnum:       SurfaceAbsVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
+					case SurfaceRelVelMisfitEnum:       SurfaceRelVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
+					case SurfaceLogVelMisfitEnum:       SurfaceLogVelMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);        break;
+					case SurfaceLogVxVyMisfitEnum:      SurfaceLogVxVyMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
+					case SurfaceAverageVelMisfitEnum:   SurfaceAverageVelMisfitx(&double_result,this);                                                  break;
+					case ThicknessAbsMisfitEnum:        ThicknessAbsMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);         break;
+					case ThicknessAbsGradientEnum:      this->ThicknessAbsGradientx(&double_result);                                                    break;
+					case ThicknessAlongGradientEnum:    ThicknessAlongGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);     break;
+					case ThicknessAcrossGradientEnum:   ThicknessAcrossGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);    break;
+					case ThicknessPositiveEnum:         this->ThicknessPositivex(&double_result);                                                       break;
+					case RheologyBbarAbsGradientEnum:   RheologyBbarAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);    break;
+					case RheologyBAbsGradientEnum:      RheologyBAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
+					case RheologyBInitialguessMisfitEnum:  RheologyBInitialguessMisfitx(&double_result,elements,nodes,vertices,loads,materials,parameters);       break;
+					case DragCoefficientAbsGradientEnum:DragCoefficientAbsGradientx(&double_result,elements,nodes,vertices,loads,materials,parameters); break;
+					case BalancethicknessMisfitEnum:    BalancethicknessMisfitx(&double_result);                                                        break;
+					case SurfaceAbsMisfitEnum:          SurfaceAbsMisfitx(&double_result); break;
+					case OmegaAbsGradientEnum:          OmegaAbsGradientx(&double_result); break;
+					case EtaDiffEnum:                   EtaDiffx(&double_result); break;
 
 				   /*Vector */
@@ -2234,4 +2251,5 @@
 
 						/*Vector layout*/
+						if(!IsInputEnum(output_enum)) _error_("Cannot output \""<<EnumToStringx(output_enum)<<"\" because it is not an input");
 						int interpolation,nodesperelement,size,nlines,ncols,array_size;
 						int rank_interpolation=-1,rank_nodesperelement=-1,rank_arraysize=-1,max_rank_arraysize=0;
@@ -2385,4 +2403,5 @@
 		case IceVolumeAboveFloatationEnum:       this->IceVolumeAboveFloatationx(responses, false); break;
 		case IceVolumeAboveFloatationScaledEnum: this->IceVolumeAboveFloatationx(responses, true); break;
+		case IcefrontMassFluxEnum:               this->IcefrontMassFluxx(responses, true); break;
 		case GroundedAreaEnum:                   this->GroundedAreax(responses, false); break;
 		case GroundedAreaScaledEnum:             this->GroundedAreax(responses, true); break;
Index: /issm/trunk-jpl/src/c/classes/FemModel.h
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 23884)
+++ /issm/trunk-jpl/src/c/classes/FemModel.h	(revision 23885)
@@ -101,4 +101,5 @@
 		void GroundedAreax(IssmDouble* pV, bool scaled);
 		void IcefrontAreax();
+		void IcefrontMassFluxx(IssmDouble* presponse, bool scaled);
 		void IceMassx(IssmDouble* pV, bool scaled);
 		void IceVolumex(IssmDouble* pV, bool scaled);
Index: /issm/trunk-jpl/src/c/modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.cpp	(revision 23884)
+++ /issm/trunk-jpl/src/c/modules/OutputDefinitionsResponsex/OutputDefinitionsResponsex.cpp	(revision 23885)
@@ -34,5 +34,4 @@
 	/*If we are here, did not find the definition for this response, not good!: */
 	_error_("Could not find the response for output definition " << output_string << " because could not find the definition itself!");
-
 }
 
@@ -63,4 +62,3 @@
 				<<" ("<<output_enum<<")"
 				<< " because could not find the definition itself!");
-
 }
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 23884)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 23885)
@@ -1054,5 +1054,5 @@
 	MassFluxEnum,
 	GroundinglineMassFluxEnum,
-	IceFrontMassFluxEnum,
+	IcefrontMassFluxEnum,
 	MasstransportAnalysisEnum,
 	MasstransportSolutionEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 23884)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 23885)
@@ -1058,5 +1058,5 @@
 		case MassFluxEnum : return "MassFlux";
 		case GroundinglineMassFluxEnum : return "GroundinglineMassFlux";
-		case IceFrontMassFluxEnum : return "IceFrontMassFlux";
+		case IcefrontMassFluxEnum : return "IcefrontMassFlux";
 		case MasstransportAnalysisEnum : return "MasstransportAnalysis";
 		case MasstransportSolutionEnum : return "MasstransportSolution";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 23884)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 23885)
@@ -1082,5 +1082,5 @@
 	      else if (strcmp(name,"MassFlux")==0) return MassFluxEnum;
 	      else if (strcmp(name,"GroundinglineMassFlux")==0) return GroundinglineMassFluxEnum;
-	      else if (strcmp(name,"IceFrontMassFlux")==0) return IceFrontMassFluxEnum;
+	      else if (strcmp(name,"IcefrontMassFlux")==0) return IcefrontMassFluxEnum;
 	      else if (strcmp(name,"MasstransportAnalysis")==0) return MasstransportAnalysisEnum;
 	      else if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum;
