Index: /issm/trunk-jpl/src/c/Makefile.am
===================================================================
--- /issm/trunk-jpl/src/c/Makefile.am	(revision 22907)
+++ /issm/trunk-jpl/src/c/Makefile.am	(revision 22908)
@@ -264,4 +264,5 @@
 					./cores/thermal_core.cpp\
 					./cores/smb_core.cpp\
+					./cores/bmb_core.cpp\
 					./solutionsequences/solutionsequence_thermal_nonlinear.cpp\
 					./modules/ControlInputSetGradientx/ControlInputSetGradientx.cpp\
Index: /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp	(revision 22907)
+++ /issm/trunk-jpl/src/c/analyses/L2ProjectionBaseAnalysis.cpp	(revision 22908)
@@ -165,6 +165,6 @@
 		case SurfaceSlopeXEnum: input2 = basalelement->GetInput(SurfaceEnum); _assert_(input2); break;
 		case SurfaceSlopeYEnum: input2 = basalelement->GetInput(SurfaceEnum); _assert_(input2); break;
-		case BedSlopeXEnum:     input2 = basalelement->GetInput(BaseEnum);     _assert_(input2); break;
-		case BedSlopeYEnum:     input2 = basalelement->GetInput(BaseEnum);     _assert_(input2); break;
+		case BedSlopeXEnum:     input2 = basalelement->GetInput(BedEnum);     _assert_(input2); break;
+		case BedSlopeYEnum:     input2 = basalelement->GetInput(BedEnum);     _assert_(input2); break;
 		case LevelsetfunctionSlopeXEnum: input2 = basalelement->GetInput(MaskIceLevelsetEnum);     _assert_(input2); break;
 		case LevelsetfunctionSlopeYEnum: input2 = basalelement->GetInput(MaskIceLevelsetEnum);     _assert_(input2); break;
Index: /issm/trunk-jpl/src/c/cores/bmb_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/bmb_core.cpp	(revision 22908)
+++ /issm/trunk-jpl/src/c/cores/bmb_core.cpp	(revision 22908)
@@ -0,0 +1,36 @@
+/*!\file: bmb_core.cpp
+ * \brief: core of the bmb (Basal mass balance) solution 
+ */ 
+
+#include "./cores.h"
+#include "../toolkits/toolkits.h"
+#include "../classes/classes.h"
+#include "../shared/shared.h"
+#include "../modules/modules.h"
+#include "../solutionsequences/solutionsequences.h"
+
+void bmb_core(FemModel* femmodel){
+
+
+	/*First, get BMB model from parameters*/
+	int  basalforcing_model;
+	bool isplume;
+	femmodel->parameters->FindParam(&basalforcing_model,BasalforcingsEnum);
+
+	/*In some cases we need to run additional analyses to get the required input data*/
+	if(basalforcing_model==BasalforcingsPicoEnum){
+		//femmodel->parameters->FindParam(&isplume,BasalforcingsIsplumeEnum);
+		if(isplume){
+
+			femmodel->SetCurrentConfiguration(L2ProjectionBaseAnalysisEnum);
+			_error_("STOP");
+			//femmodel->parameters->SetParam(BaseSlopeXEnum,InputToL2ProjectEnum);
+			solutionsequence_linear(femmodel);
+			//femmodel->parameters->SetParam(BaseSlopeYEnum,InputToL2ProjectEnum);
+			solutionsequence_linear(femmodel);
+		}
+	}
+
+	/*Call module now*/
+	FloatingiceMeltingRatex(femmodel);
+}
Index: /issm/trunk-jpl/src/c/cores/cores.h
===================================================================
--- /issm/trunk-jpl/src/c/cores/cores.h	(revision 22907)
+++ /issm/trunk-jpl/src/c/cores/cores.h	(revision 22908)
@@ -51,4 +51,5 @@
 void esa_core(FemModel* femmodel);
 void smb_core(FemModel* femmodel);
+void bmb_core(FemModel* femmodel);
 void damage_core(FemModel* femmodel);
 void sealevelrise_core(FemModel* femmodel);
Index: /issm/trunk-jpl/src/c/cores/transient_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 22907)
+++ /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 22908)
@@ -320,8 +320,8 @@
 		/* from here on, prepare geometry for next time step*/
 
-		if(issmb)           smb_core(femmodel);
-		if(ismasstransport) FloatingiceMeltingRatex(femmodel);
+		if(issmb) smb_core(femmodel);
 
 		if(ismasstransport){
+			bmb_core(femmodel);
 			masstransport_core(femmodel);
 			femmodel->UpdateVertexPositionsx();
Index: /issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp	(revision 22907)
+++ /issm/trunk-jpl/src/c/modules/FloatingiceMeltingRatex/FloatingiceMeltingRatex.cpp	(revision 22908)
@@ -12,5 +12,5 @@
 	int  basalforcing_model;
 
-	/*First, get SMB model from parameters*/
+	/*First, get BMB model from parameters*/
 	femmodel->parameters->FindParam(&basalforcing_model,BasalforcingsEnum);
 
