Index: /issm/trunk-jpl/src/c/Makefile.am
===================================================================
--- /issm/trunk-jpl/src/c/Makefile.am	(revision 19526)
+++ /issm/trunk-jpl/src/c/Makefile.am	(revision 19527)
@@ -206,4 +206,5 @@
 					./cores/extrudefromtop_core.cpp\
 					./cores/thermal_core.cpp\
+					./cores/smb_core.cpp\
 					./solutionsequences/solutionsequence_thermal_nonlinear.cpp\
 					./modules/ControlInputSetGradientx/ControlInputSetGradientx.cpp\
Index: /issm/trunk-jpl/src/c/analyses/Balancethickness2Analysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/Balancethickness2Analysis.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/analyses/Balancethickness2Analysis.cpp	(revision 19527)
@@ -35,5 +35,5 @@
 	iomodel->FetchDataToInput(elements,MaskIceLevelsetEnum);
 	iomodel->FetchDataToInput(elements,BasalforcingsGroundediceMeltingRateEnum);
-	iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum);
+	iomodel->FetchDataToInput(elements,SmbMassBalanceEnum);
 	iomodel->FetchDataToInput(elements,BalancethicknessThickeningRateEnum);
 	iomodel->FetchDataToInput(elements,BalancethicknessOmegaEnum);
@@ -188,5 +188,5 @@
 	/*Retrieve all inputs and parameters*/
 	element->GetVerticesCoordinates(&xyz_list);
-	Input* ms_input   = element->GetInput(SurfaceforcingsMassBalanceEnum);                _assert_(ms_input);
+	Input* ms_input   = element->GetInput(SmbMassBalanceEnum);                _assert_(ms_input);
 	Input* mb_input   = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);       _assert_(mb_input);
 	Input* dhdt_input = element->GetInput(BalancethicknessThickeningRateEnum);            _assert_(dhdt_input);
Index: /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/analyses/BalancethicknessAnalysis.cpp	(revision 19527)
@@ -102,5 +102,5 @@
 	iomodel->FetchDataToInput(elements,VyEnum);
 	iomodel->FetchDataToInput(elements,BasalforcingsGroundediceMeltingRateEnum);
-	iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum);
+	iomodel->FetchDataToInput(elements,SmbMassBalanceEnum);
 	iomodel->FetchDataToInput(elements,BalancethicknessThickeningRateEnum);
 
@@ -355,5 +355,5 @@
 	element->GetVerticesCoordinates(&xyz_list);
 	Input* mb_input   = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);       _assert_(mb_input);
-	Input* ms_input   = element->GetInput(SurfaceforcingsMassBalanceEnum);     _assert_(ms_input);
+	Input* ms_input   = element->GetInput(SmbMassBalanceEnum);     _assert_(ms_input);
 	Input* dhdt_input = element->GetInput(BalancethicknessThickeningRateEnum); _assert_(dhdt_input);
 
@@ -396,5 +396,5 @@
 	element->GetVerticesCoordinates(&xyz_list);
 	Input* mb_input   = element->GetInput(BasalforcingsGroundediceMeltingRateEnum);       _assert_(mb_input);
-	Input* ms_input   = element->GetInput(SurfaceforcingsMassBalanceEnum);     _assert_(ms_input);
+	Input* ms_input   = element->GetInput(SmbMassBalanceEnum);     _assert_(ms_input);
 	Input* dhdt_input = element->GetInput(BalancethicknessThickeningRateEnum); _assert_(dhdt_input);
 
@@ -517,5 +517,5 @@
 	Input* vx_input                   = element->GetInput(VxEnum);                                  _assert_(vx_input);
 	Input* vy_input                   = element->GetInput(VyEnum);                                  _assert_(vy_input);
-	Input* surface_mass_balance_input = element->GetInput(SurfaceforcingsMassBalanceEnum);          _assert_(surface_mass_balance_input);
+	Input* surface_mass_balance_input = element->GetInput(SmbMassBalanceEnum);          _assert_(surface_mass_balance_input);
 	Input* basal_melting_input        = element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(basal_melting_input);
 	Input* dhdt_input                 = element->GetInput(BalancethicknessThickeningRateEnum);      _assert_(dhdt_input);
Index: /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/analyses/BalancevelocityAnalysis.cpp	(revision 19527)
@@ -45,5 +45,5 @@
 	iomodel->FetchDataToInput(elements,VyEnum);
 	iomodel->FetchDataToInput(elements,BasalforcingsGroundediceMeltingRateEnum);
-	iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum);
+	iomodel->FetchDataToInput(elements,SmbMassBalanceEnum);
 	iomodel->FetchDataToInput(elements,BalancethicknessThickeningRateEnum);
 
@@ -183,5 +183,5 @@
 	/*Retrieve all inputs and parameters*/
 	basalelement->GetVerticesCoordinates(&xyz_list);
-	Input* ms_input   = basalelement->GetInput(SurfaceforcingsMassBalanceEnum);          _assert_(ms_input);
+	Input* ms_input   = basalelement->GetInput(SmbMassBalanceEnum);          _assert_(ms_input);
 	Input* mb_input   = basalelement->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(mb_input);
 	Input* dhdt_input = basalelement->GetInput(BalancethicknessThickeningRateEnum);      _assert_(dhdt_input);
Index: /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/analyses/FreeSurfaceTopAnalysis.cpp	(revision 19527)
@@ -67,5 +67,5 @@
 
 	/*Fetch data needed: */
-	iomodel->Constant(&smb_model,SurfaceforcingsEnum);
+	iomodel->Constant(&smb_model,SmbEnum);
 
 	/*Update elements: */
@@ -90,6 +90,6 @@
 	}
 	switch(smb_model){
-		case SMBEnum:
-			iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum,0.);
+		case SMBforcingEnum:
+			iomodel->FetchDataToInput(elements,SmbMassBalanceEnum,0.);
 			break;
 		default:
@@ -274,5 +274,5 @@
 	topelement->GetVerticesCoordinates(&xyz_list);
 	topelement->FindParam(&dt,TimesteppingTimeStepEnum);
-	Input* ms_input      = topelement->GetInput(SurfaceforcingsMassBalanceEnum);  _assert_(ms_input);
+	Input* ms_input      = topelement->GetInput(SmbMassBalanceEnum);  _assert_(ms_input);
 	Input* surface_input = topelement->GetInput(SurfaceEnum);                     _assert_(surface_input);
 	Input* vz_input      = NULL;
Index: /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp	(revision 19527)
@@ -127,5 +127,5 @@
 	iomodel->Constant(&stabilization,MasstransportStabilizationEnum);
 	iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum);
-	iomodel->Constant(&smb_model,SurfaceforcingsEnum);
+	iomodel->Constant(&smb_model,SmbEnum);
 	iomodel->Constant(&isgroundingline,TransientIsgroundinglineEnum);
 	iomodel->Constant(&islevelset,TransientIslevelsetEnum);
@@ -174,55 +174,55 @@
 
 	switch(smb_model){
-		case SMBEnum:
-			iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum,0.);
+		case SMBforcingEnum:
+			iomodel->FetchDataToInput(elements,SmbMassBalanceEnum,0.);
 			break;
 		case SMBpddEnum:
-			iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
-			iomodel->Constant(&ismungsm,SurfaceforcingsIsmungsmEnum);
+			iomodel->Constant(&isdelta18o,SmbIsdelta18oEnum);
+			iomodel->Constant(&ismungsm,SmbIsmungsmEnum);
 			iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsS0pEnum);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsS0tEnum);
+			iomodel->FetchDataToInput(elements,SmbS0pEnum);
+			iomodel->FetchDataToInput(elements,SmbS0tEnum);
 			if(isdelta18o || ismungsm){
-				iomodel->FetchDataToInput(elements,SurfaceforcingsTemperaturesLgmEnum);
-				iomodel->FetchDataToInput(elements,SurfaceforcingsTemperaturesPresentdayEnum);
-				iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationsPresentdayEnum);
-				iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationsLgmEnum);
+				iomodel->FetchDataToInput(elements,SmbTemperaturesLgmEnum);
+				iomodel->FetchDataToInput(elements,SmbTemperaturesPresentdayEnum);
+				iomodel->FetchDataToInput(elements,SmbPrecipitationsPresentdayEnum);
+				iomodel->FetchDataToInput(elements,SmbPrecipitationsLgmEnum);
 			}
 			else{
-				iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationEnum);
-				iomodel->FetchDataToInput(elements,SurfaceforcingsMonthlytemperaturesEnum);
+				iomodel->FetchDataToInput(elements,SmbPrecipitationEnum);
+				iomodel->FetchDataToInput(elements,SmbMonthlytemperaturesEnum);
 			}
 			break;
 		case SMBd18opddEnum:
-			iomodel->Constant(&ismungsm,SurfaceforcingsIsmungsmEnum);
-			iomodel->Constant(&isd18opd,SurfaceforcingsIsd18opdEnum);
+			iomodel->Constant(&ismungsm,SmbIsmungsmEnum);
+			iomodel->Constant(&isd18opd,SmbIsd18opdEnum);
 			iomodel->FetchDataToInput(elements,ThermalSpctemperatureEnum);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsS0pEnum);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsS0tEnum);
+			iomodel->FetchDataToInput(elements,SmbS0pEnum);
+			iomodel->FetchDataToInput(elements,SmbS0tEnum);
 			if (isd18opd){
-			        iomodel->FetchDataToInput(elements,SurfaceforcingsTemperaturesPresentdayEnum);
-			        iomodel->FetchDataToInput(elements,SurfaceforcingsPrecipitationsPresentdayEnum);
+			        iomodel->FetchDataToInput(elements,SmbTemperaturesPresentdayEnum);
+			        iomodel->FetchDataToInput(elements,SmbPrecipitationsPresentdayEnum);
 			}
 
 			break;
 		case SMBgradientsEnum:
-			iomodel->FetchDataToInput(elements,SurfaceforcingsHrefEnum);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsSmbrefEnum);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsBPosEnum);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsBNegEnum);
+			iomodel->FetchDataToInput(elements,SmbHrefEnum);
+			iomodel->FetchDataToInput(elements,SmbSmbrefEnum);
+			iomodel->FetchDataToInput(elements,SmbBPosEnum);
+			iomodel->FetchDataToInput(elements,SmbBNegEnum);
 			break;
 		case SMBhenningEnum:
-			iomodel->FetchDataToInput(elements,SurfaceforcingsSmbrefEnum,0.);
+			iomodel->FetchDataToInput(elements,SmbSmbrefEnum,0.);
 			break;
 		case SMBcomponentsEnum:
-			iomodel->FetchDataToInput(elements,SurfaceforcingsAccumulationEnum,0.);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsEvaporationEnum,0.);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsRunoffEnum,0.);
+			iomodel->FetchDataToInput(elements,SmbAccumulationEnum,0.);
+			iomodel->FetchDataToInput(elements,SmbEvaporationEnum,0.);
+			iomodel->FetchDataToInput(elements,SmbRunoffEnum,0.);
 			break;
 		case SMBmeltcomponentsEnum:
-			iomodel->FetchDataToInput(elements,SurfaceforcingsAccumulationEnum,0.);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsEvaporationEnum,0.);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsMeltEnum,0.);
-			iomodel->FetchDataToInput(elements,SurfaceforcingsRefreezeEnum,0.);
+			iomodel->FetchDataToInput(elements,SmbAccumulationEnum,0.);
+			iomodel->FetchDataToInput(elements,SmbEvaporationEnum,0.);
+			iomodel->FetchDataToInput(elements,SmbMeltEnum,0.);
+			iomodel->FetchDataToInput(elements,SmbRefreezeEnum,0.);
 			break;
 		default:
@@ -247,4 +247,10 @@
 	if(numoutputs)parameters->AddObject(new StringArrayParam(MasstransportRequestedOutputsEnum,requestedoutputs,numoutputs));
 	iomodel->DeleteData(&requestedoutputs,numoutputs,MasstransportRequestedOutputsEnum);
+	
+	iomodel->FetchData(&requestedoutputs,&numoutputs,SmbRequestedOutputsEnum);
+	parameters->AddObject(new IntParam(SmbNumRequestedOutputsEnum,numoutputs));
+	if(numoutputs)parameters->AddObject(new StringArrayParam(SmbRequestedOutputsEnum,requestedoutputs,numoutputs));
+	iomodel->DeleteData(&requestedoutputs,numoutputs,SmbRequestedOutputsEnum);
+
 
 }/*}}}*/
@@ -562,5 +568,5 @@
 	Input* fmb_input           = element->GetInput(BasalforcingsFloatingiceMeltingRateEnum);  _assert_(fmb_input);
 	Input* groundedice_input   = element->GetInput(MaskGroundediceLevelsetEnum);              _assert_(groundedice_input);
-	Input* ms_input            = element->GetInput(SurfaceforcingsMassBalanceEnum);           _assert_(ms_input);
+	Input* ms_input            = element->GetInput(SmbMassBalanceEnum);           _assert_(ms_input);
 	Input* thickness_input     = element->GetInput(ThicknessEnum);                            _assert_(thickness_input);
 
@@ -612,5 +618,5 @@
 	Input* gmb_input           = element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(gmb_input);
 	Input* fmb_input           = element->GetInput(BasalforcingsFloatingiceMeltingRateEnum); _assert_(fmb_input);
-	Input* ms_input            = element->GetInput(SurfaceforcingsMassBalanceEnum);          _assert_(ms_input);
+	Input* ms_input            = element->GetInput(SmbMassBalanceEnum);          _assert_(ms_input);
 	Input* groundedice_input   = element->GetInput(MaskGroundediceLevelsetEnum);             _assert_(groundedice_input);
 	Input* thickness_input     = element->GetInput(ThicknessEnum);                           _assert_(thickness_input);
Index: /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/analyses/StressbalanceVerticalAnalysis.cpp	(revision 19527)
@@ -112,5 +112,5 @@
 	iomodel->FetchDataToInput(elements,BasalforcingsGroundediceMeltingRateEnum);
 	iomodel->FetchDataToInput(elements,BasalforcingsFloatingiceMeltingRateEnum);
-	//iomodel->FetchDataToInput(elements,SurfaceforcingsMassBalanceEnum);
+	//iomodel->FetchDataToInput(elements,SmbMassBalanceEnum);
 	iomodel->FetchDataToInput(elements,VxEnum,0.);
 	iomodel->FetchDataToInput(elements,VyEnum,0.);
@@ -382,5 +382,5 @@
 	element->GetInputValue(&approximation,ApproximationEnum);
 	Input* surface_input    =element->GetInput(SurfaceEnum);               _assert_(surface_input);
-	Input* smb_input=element->GetInput(SurfaceforcingsMassBalanceEnum);    _assert_(smb_input);
+	Input* smb_input=element->GetInput(SmbMassBalanceEnum);    _assert_(smb_input);
 	Input* vx_input=element->GetInput(VxEnum);                             _assert_(vx_input);
 	Input* vy_input=element->GetInput(VyEnum);                             _assert_(vy_input);
Index: /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp
===================================================================
--- /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/analyses/ThermalAnalysis.cpp	(revision 19527)
@@ -24,5 +24,5 @@
 	else if (iomodel->solution_enum==TransientSolutionEnum){
 		int smb_model;
-		iomodel->Constant(&smb_model,SurfaceforcingsEnum);
+		iomodel->Constant(&smb_model,SmbEnum);
 		if(smb_model==SMBpddEnum) isdynamic=true;
 		if(smb_model==SMBd18opddEnum) isdynamic=true;
Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 19527)
@@ -511,7 +511,7 @@
 
 	/*Recover present day temperature and precipitation*/
-	Input* input=this->inputs->GetInput(SurfaceforcingsTemperaturesPresentdayEnum);    _assert_(input);
-	Input* input2=this->inputs->GetInput(SurfaceforcingsTemperaturesLgmEnum);          _assert_(input2);
-	Input* input3=this->inputs->GetInput(SurfaceforcingsPrecipitationsPresentdayEnum); _assert_(input3);
+	Input* input=this->inputs->GetInput(SmbTemperaturesPresentdayEnum);    _assert_(input);
+	Input* input2=this->inputs->GetInput(SmbTemperaturesLgmEnum);          _assert_(input2);
+	Input* input3=this->inputs->GetInput(SmbPrecipitationsPresentdayEnum); _assert_(input3);
 	/*loop over vertices: */
 	Gauss* gauss=this->NewGauss();
@@ -528,10 +528,10 @@
 
 	/*Recover delta18o and Delta18oSurface at present day, lgm and at time t*/
-	this->parameters->FindParam(&Delta18oPresent,SurfaceforcingsDelta18oEnum,finaltime);
-	this->parameters->FindParam(&Delta18oLgm,SurfaceforcingsDelta18oEnum,(finaltime-(21000*yts)));
-	this->parameters->FindParam(&Delta18oTime,SurfaceforcingsDelta18oEnum,time);
-	this->parameters->FindParam(&Delta18oSurfacePresent,SurfaceforcingsDelta18oSurfaceEnum,finaltime);
-	this->parameters->FindParam(&Delta18oSurfaceLgm,SurfaceforcingsDelta18oSurfaceEnum,(finaltime-(21000*yts)));
-	this->parameters->FindParam(&Delta18oSurfaceTime,SurfaceforcingsDelta18oSurfaceEnum,time);
+	this->parameters->FindParam(&Delta18oPresent,SmbDelta18oEnum,finaltime);
+	this->parameters->FindParam(&Delta18oLgm,SmbDelta18oEnum,(finaltime-(21000*yts)));
+	this->parameters->FindParam(&Delta18oTime,SmbDelta18oEnum,time);
+	this->parameters->FindParam(&Delta18oSurfacePresent,SmbDelta18oSurfaceEnum,finaltime);
+	this->parameters->FindParam(&Delta18oSurfaceLgm,SmbDelta18oSurfaceEnum,(finaltime-(21000*yts)));
+	this->parameters->FindParam(&Delta18oSurfaceTime,SmbDelta18oSurfaceEnum,time);
 
 	/*Compute the temperature and precipitation*/
@@ -545,19 +545,19 @@
 
 	/*Update inputs*/
-	TransientInput* NewTemperatureInput = new TransientInput(SurfaceforcingsMonthlytemperaturesEnum);
-	TransientInput* NewPrecipitationInput = new TransientInput(SurfaceforcingsPrecipitationEnum);
+	TransientInput* NewTemperatureInput = new TransientInput(SmbMonthlytemperaturesEnum);
+	TransientInput* NewPrecipitationInput = new TransientInput(SmbPrecipitationEnum);
 	for (int imonth=0;imonth<12;imonth++) {
 		for(i=0;i<numvertices;i++) tmp[i]=monthlytemperatures[i*12+imonth];
 		switch(this->ObjectEnum()){
-			case TriaEnum:  NewTemperatureInput->AddTimeInput(new TriaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
-			case PentaEnum: NewTemperatureInput->AddTimeInput(new PentaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
-			case TetraEnum: NewTemperatureInput->AddTimeInput(new TetraInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TriaEnum:  NewTemperatureInput->AddTimeInput(new TriaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewTemperatureInput->AddTimeInput(new PentaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewTemperatureInput->AddTimeInput(new TetraInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
 			default: _error_("Not implemented yet");
 		}
 		for(i=0;i<numvertices;i++) tmp[i]=monthlyprec[i*12+imonth]/yts;
 		switch(this->ObjectEnum()){
-			case TriaEnum:  NewPrecipitationInput->AddTimeInput(new TriaInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
-			case PentaEnum: NewPrecipitationInput->AddTimeInput(new PentaInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
-			case TetraEnum: NewPrecipitationInput->AddTimeInput(new TetraInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TriaEnum:  NewPrecipitationInput->AddTimeInput(new TriaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewPrecipitationInput->AddTimeInput(new PentaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewPrecipitationInput->AddTimeInput(new TetraInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
 			default: _error_("Not implemented yet");
 		}
@@ -573,6 +573,6 @@
 		case PentaEnum:
 		case TetraEnum:
-							this->InputExtrude(SurfaceforcingsMonthlytemperaturesEnum,-1);
-							this->InputExtrude(SurfaceforcingsPrecipitationEnum,-1);
+							this->InputExtrude(SmbMonthlytemperaturesEnum,-1);
+							this->InputExtrude(SmbPrecipitationEnum,-1);
 							break;
 		default: _error_("Not implemented yet");
@@ -611,8 +611,8 @@
 
 	/*Recover present day temperature and precipitation*/
-	Input*     input=this->inputs->GetInput(SurfaceforcingsTemperaturesPresentdayEnum);    _assert_(input);
-	Input*     input2=this->inputs->GetInput(SurfaceforcingsTemperaturesLgmEnum);          _assert_(input2);
-	Input*     input3=this->inputs->GetInput(SurfaceforcingsPrecipitationsPresentdayEnum); _assert_(input3);
-	Input*     input4=this->inputs->GetInput(SurfaceforcingsPrecipitationsLgmEnum);        _assert_(input4);
+	Input*     input=this->inputs->GetInput(SmbTemperaturesPresentdayEnum);    _assert_(input);
+	Input*     input2=this->inputs->GetInput(SmbTemperaturesLgmEnum);          _assert_(input2);
+	Input*     input3=this->inputs->GetInput(SmbPrecipitationsPresentdayEnum); _assert_(input3);
+	Input*     input4=this->inputs->GetInput(SmbPrecipitationsLgmEnum);        _assert_(input4);
 	/*loop over vertices: */
 	Gauss* gauss=this->NewGauss();
@@ -631,6 +631,6 @@
 
 	/*Recover interpolation parameters at time t*/
-	this->parameters->FindParam(&TdiffTime,SurfaceforcingsTdiffEnum,time);
-	this->parameters->FindParam(&PfacTime,SurfaceforcingsPfacEnum,time);
+	this->parameters->FindParam(&TdiffTime,SmbTdiffEnum,time);
+	this->parameters->FindParam(&PfacTime,SmbPfacEnum,time);
 
 	/*Compute the temperature and precipitation*/
@@ -643,19 +643,19 @@
 
 	/*Update inputs*/
-	TransientInput* NewTemperatureInput = new TransientInput(SurfaceforcingsMonthlytemperaturesEnum);
-	TransientInput* NewPrecipitationInput = new TransientInput(SurfaceforcingsPrecipitationEnum);
+	TransientInput* NewTemperatureInput = new TransientInput(SmbMonthlytemperaturesEnum);
+	TransientInput* NewPrecipitationInput = new TransientInput(SmbPrecipitationEnum);
 	for (int imonth=0;imonth<12;imonth++) {
 		for(i=0;i<numvertices;i++) tmp[i]=monthlytemperatures[i*12+imonth];
 		switch(this->ObjectEnum()){
-			case TriaEnum:  NewTemperatureInput->AddTimeInput(new TriaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
-			case PentaEnum: NewTemperatureInput->AddTimeInput(new PentaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
-			case TetraEnum: NewTemperatureInput->AddTimeInput(new TetraInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TriaEnum:  NewTemperatureInput->AddTimeInput(new TriaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewTemperatureInput->AddTimeInput(new PentaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewTemperatureInput->AddTimeInput(new TetraInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
 			default: _error_("Not implemented yet");
 		}
 		for(i=0;i<numvertices;i++) tmp[i]=monthlyprec[i*12+imonth]/yts;
 		switch(this->ObjectEnum()){
-			case TriaEnum:  NewPrecipitationInput->AddTimeInput(new TriaInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
-			case PentaEnum: NewPrecipitationInput->AddTimeInput(new PentaInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
-			case TetraEnum: NewPrecipitationInput->AddTimeInput(new TetraInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TriaEnum:  NewPrecipitationInput->AddTimeInput(new TriaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewPrecipitationInput->AddTimeInput(new PentaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewPrecipitationInput->AddTimeInput(new TetraInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
 			default: _error_("Not implemented yet");
 		}
@@ -671,6 +671,6 @@
 		case PentaEnum:
 		case TetraEnum:
-							this->InputExtrude(SurfaceforcingsMonthlytemperaturesEnum,-1);
-							this->InputExtrude(SurfaceforcingsPrecipitationEnum,-1);
+							this->InputExtrude(SmbMonthlytemperaturesEnum,-1);
+							this->InputExtrude(SmbPrecipitationEnum,-1);
 							break;
 		default: _error_("Not implemented yet");
@@ -709,9 +709,9 @@
 
 	/*Get some pdd parameters*/
-	dpermil=this->matpar->GetMaterialParameter(SurfaceforcingsDpermilEnum);
+	dpermil=this->matpar->GetMaterialParameter(SmbDpermilEnum);
 
 	/*Recover present day temperature and precipitation*/
-	Input*     input=this->inputs->GetInput(SurfaceforcingsTemperaturesPresentdayEnum);    _assert_(input);
-	Input*     input2=this->inputs->GetInput(SurfaceforcingsPrecipitationsPresentdayEnum); _assert_(input2);
+	Input*     input=this->inputs->GetInput(SmbTemperaturesPresentdayEnum);    _assert_(input);
+	Input*     input2=this->inputs->GetInput(SmbPrecipitationsPresentdayEnum); _assert_(input2);
 	/*loop over vertices: */
 	Gauss* gauss=this->NewGauss();
@@ -727,5 +727,5 @@
 
 	/*Recover interpolation parameters at time t*/
-	this->parameters->FindParam(&Delta18oTime,SurfaceforcingsDelta18oEnum,time);
+	this->parameters->FindParam(&Delta18oTime,SmbDelta18oEnum,time);
 
 	/*Compute the temperature and precipitation*/
@@ -737,19 +737,19 @@
 
 	/*Update inputs*/
-	TransientInput* NewTemperatureInput = new TransientInput(SurfaceforcingsMonthlytemperaturesEnum);
-	TransientInput* NewPrecipitationInput = new TransientInput(SurfaceforcingsPrecipitationEnum);
+	TransientInput* NewTemperatureInput = new TransientInput(SmbMonthlytemperaturesEnum);
+	TransientInput* NewPrecipitationInput = new TransientInput(SmbPrecipitationEnum);
 	for (int imonth=0;imonth<12;imonth++) {
 		for(i=0;i<numvertices;i++) tmp[i]=monthlytemperatures[i*12+imonth];
 		switch(this->ObjectEnum()){
-			case TriaEnum:  NewTemperatureInput->AddTimeInput(new TriaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
-			case PentaEnum: NewTemperatureInput->AddTimeInput(new PentaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
-			case TetraEnum: NewTemperatureInput->AddTimeInput(new TetraInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TriaEnum:  NewTemperatureInput->AddTimeInput(new TriaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewTemperatureInput->AddTimeInput(new PentaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewTemperatureInput->AddTimeInput(new TetraInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
 			default: _error_("Not implemented yet");
 		}
 		for(i=0;i<numvertices;i++) tmp[i]=monthlyprec[i*12+imonth]/yts;
 		switch(this->ObjectEnum()){
-			case TriaEnum:  NewPrecipitationInput->AddTimeInput(new TriaInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
-			case PentaEnum: NewPrecipitationInput->AddTimeInput(new PentaInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
-			case TetraEnum: NewPrecipitationInput->AddTimeInput(new TetraInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TriaEnum:  NewPrecipitationInput->AddTimeInput(new TriaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case PentaEnum: NewPrecipitationInput->AddTimeInput(new PentaInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
+			case TetraEnum: NewPrecipitationInput->AddTimeInput(new TetraInput(SmbPrecipitationEnum,&tmp[0],P1Enum),time_yr+imonth/12.*yts); break;
 			default: _error_("Not implemented yet");
 		}
@@ -765,6 +765,6 @@
 		case PentaEnum:
 		case TetraEnum:
-							this->InputExtrude(SurfaceforcingsMonthlytemperaturesEnum,-1);
-							this->InputExtrude(SurfaceforcingsPrecipitationEnum,-1);
+							this->InputExtrude(SmbMonthlytemperaturesEnum,-1);
+							this->InputExtrude(SmbPrecipitationEnum,-1);
 							break;
 		default: _error_("Not implemented yet");
@@ -1458,5 +1458,5 @@
 				name==SurfaceSlopeXEnum ||
 				name==SurfaceSlopeYEnum ||
-				name==SurfaceforcingsMassBalanceEnum ||
+				name==SmbMassBalanceEnum ||
 				name==BasalforcingsGroundediceMeltingRateEnum ||
 				name==BasalforcingsFloatingiceMeltingRateEnum ||
@@ -1715,11 +1715,11 @@
 
 	/*Get some pdd parameters*/
-	desfac=this->matpar->GetMaterialParameter(SurfaceforcingsDesfacEnum);
-	rlaps=this->matpar->GetMaterialParameter(SurfaceforcingsRlapsEnum);
-	rlapslgm=this->matpar->GetMaterialParameter(SurfaceforcingsRlapslgmEnum);
+	desfac=this->matpar->GetMaterialParameter(SmbDesfacEnum);
+	rlaps=this->matpar->GetMaterialParameter(SmbRlapsEnum);
+	rlapslgm=this->matpar->GetMaterialParameter(SmbRlapslgmEnum);
 
 	/*Recover monthly temperatures and precipitation and compute the yearly mean temperatures*/
-	Input*     input=this->inputs->GetInput(SurfaceforcingsMonthlytemperaturesEnum); _assert_(input);
-	Input*     input2=this->inputs->GetInput(SurfaceforcingsPrecipitationEnum); _assert_(input2);
+	Input*     input=this->inputs->GetInput(SmbMonthlytemperaturesEnum); _assert_(input);
+	Input*     input2=this->inputs->GetInput(SmbPrecipitationEnum); _assert_(input2);
 	IssmDouble time,yts,time_yr;
 	this->parameters->FindParam(&time,TimeEnum);
@@ -1744,6 +1744,6 @@
 	 *         and precipitaton between PD and LGM when ismungsm==1 */
 	if (ismungsm==1){
-		this->parameters->FindParam(&TdiffTime,SurfaceforcingsTdiffEnum,time);
-		this->parameters->FindParam(&sealevTime,SurfaceforcingsSealevEnum,time);
+		this->parameters->FindParam(&TdiffTime,SmbTdiffEnum,time);
+		this->parameters->FindParam(&sealevTime,SmbSealevEnum,time);
 	}
 	else {
@@ -1755,6 +1755,6 @@
 	GetInputListOnVertices(&h[0],ThicknessEnum);
 	GetInputListOnVertices(&s[0],SurfaceEnum);
-	GetInputListOnVertices(&s0p[0],SurfaceforcingsS0pEnum);
-	GetInputListOnVertices(&s0t[0],SurfaceforcingsS0tEnum);
+	GetInputListOnVertices(&s0p[0],SmbS0pEnum);
+	GetInputListOnVertices(&s0t[0],SmbS0tEnum);
 
 	/*measure the surface mass balance*/
@@ -1771,13 +1771,13 @@
 
 	/*Update inputs*/
-	// TransientInput* NewTemperatureInput = new TransientInput(SurfaceforcingsMonthlytemperaturesEnum);
-	// TransientInput* NewPrecipitationInput = new TransientInput(SurfaceforcingsPrecipitationEnum);
+	// TransientInput* NewTemperatureInput = new TransientInput(SmbMonthlytemperaturesEnum);
+	// TransientInput* NewPrecipitationInput = new TransientInput(SmbPrecipitationEnum);
 	// for (int imonth=0;imonth<12;imonth++) {
 	//   for(i=0;i<numvertices;i++) tmp[i]=monthlytemperatures[i*12+imonth];
-	//   TriaInput* newmonthinput1 = new TriaInput(SurfaceforcingsMonthlytemperaturesEnum,&tmp[0],P1Enum);
+	//   TriaInput* newmonthinput1 = new TriaInput(SmbMonthlytemperaturesEnum,&tmp[0],P1Enum);
 	//   NewTemperatureInput->AddTimeInput(newmonthinput1,time+imonth/12.*yts);
 	//
 	//   for(i=0;i<numvertices;i++) tmp[i]=monthlyprec[i*12+imonth]/yts;
-	//   TriaInput* newmonthinput2 = new TriaInput(SurfaceforcingsPrecipitationEnum,&tmp[0],P1Enum);
+	//   TriaInput* newmonthinput2 = new TriaInput(SmbPrecipitationEnum,&tmp[0],P1Enum);
 	//   NewPrecipitationInput->AddTimeInput(newmonthinput2,time+imonth/12.*yts);
 	// }
@@ -1789,7 +1789,7 @@
 		        // this->inputs->AddInput(new TriaInput(TemperatureEnum,&yearlytemperatures[0],P1Enum));
 		        this->inputs->AddInput(new TriaInput(TemperaturePDDEnum,&yearlytemperatures[0],P1Enum));
-			this->inputs->AddInput(new TriaInput(SurfaceforcingsMassBalanceEnum,&agd[0],P1Enum));
-			this->inputs->AddInput(new TriaInput(SurfaceforcingsAccumulationEnum,&accu[0],P1Enum));
-			this->inputs->AddInput(new TriaInput(SurfaceforcingsMeltEnum,&melt[0],P1Enum));
+			this->inputs->AddInput(new TriaInput(SmbMassBalanceEnum,&agd[0],P1Enum));
+			this->inputs->AddInput(new TriaInput(SmbAccumulationEnum,&accu[0],P1Enum));
+			this->inputs->AddInput(new TriaInput(SmbMeltEnum,&melt[0],P1Enum));
 			break;
 		case PentaEnum:
@@ -1801,8 +1801,8 @@
 		              this->inputs->AddInput(new PentaInput(TemperatureEnum,&yearlytemperatures[0],P1Enum));
 		        }
-		        this->inputs->AddInput(new PentaInput(SurfaceforcingsMassBalanceEnum,&agd[0],P1Enum));
+		        this->inputs->AddInput(new PentaInput(SmbMassBalanceEnum,&agd[0],P1Enum));
 		        this->inputs->AddInput(new PentaInput(TemperaturePDDEnum,&yearlytemperatures[0],P1Enum));
 		        this->InputExtrude(TemperaturePDDEnum,-1);
-		        this->InputExtrude(SurfaceforcingsMassBalanceEnum,-1);
+		        this->InputExtrude(SmbMassBalanceEnum,-1);
 		        break;
 		case TetraEnum: 
@@ -1814,8 +1814,8 @@
 		              this->inputs->AddInput(new TetraInput(TemperatureEnum,&yearlytemperatures[0],P1Enum));
 		        }
-		        this->inputs->AddInput(new TetraInput(SurfaceforcingsMassBalanceEnum,&agd[0],P1Enum));
+		        this->inputs->AddInput(new TetraInput(SmbMassBalanceEnum,&agd[0],P1Enum));
 		        this->inputs->AddInput(new TetraInput(TemperaturePDDEnum,&yearlytemperatures[0],P1Enum));
 		        this->InputExtrude(TemperaturePDDEnum,-1);
-		        this->InputExtrude(SurfaceforcingsMassBalanceEnum,-1);
+		        this->InputExtrude(SmbMassBalanceEnum,-1);
 		        break;
 		default: _error_("Not implemented yet");
@@ -1825,7 +1825,7 @@
 	// this->inputs->AddInput(new TriaVertexInput(ThermalSpcTemperatureEnum,&Tsurf[0]));
 
-	//this->InputExtrude(SurfaceforcingsMassBalanceEnum,-1);
-	// this->InputExtrude(SurfaceforcingsMonthlytemperaturesEnum,-1);
-	// this->InputExtrude(SurfaceforcingsPrecipitationEnum,-1);
+	//this->InputExtrude(SmbMassBalanceEnum,-1);
+	// this->InputExtrude(SmbMonthlytemperaturesEnum,-1);
+	// this->InputExtrude(SmbPrecipitationEnum,-1);
 
 	/*clean-up*/
Index: /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/classes/Elements/Penta.cpp	(revision 19527)
@@ -2635,5 +2635,5 @@
 
 	/*Now get the average SMB over the element*/
-	Input* smb_input = inputs->GetInput(SurfaceforcingsMassBalanceEnum); _assert_(smb_input);
+	Input* smb_input = inputs->GetInput(SmbMassBalanceEnum); _assert_(smb_input);
 
 	smb_input->GetInputAverage(&smb);
Index: /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/classes/Elements/Tria.cpp	(revision 19527)
@@ -3047,5 +3047,5 @@
 
 	/*Now get the average SMB over the element*/
-	Input* smb_input = inputs->GetInput(SurfaceforcingsMassBalanceEnum); _assert_(smb_input);
+	Input* smb_input = inputs->GetInput(SmbMassBalanceEnum); _assert_(smb_input);
 	smb_input->GetInputAverage(&smb);																								// average smb on element in m ice s-1
    Total_Smb=rho_ice*base*smb;																											// smb on element in kg s-1
Index: /issm/trunk-jpl/src/c/classes/FemModel.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/classes/FemModel.cpp	(revision 19527)
@@ -777,4 +777,6 @@
 	IssmDouble         *surface = NULL;
 	IssmDouble         *bed     = NULL;
+			
+	if(VerboseSolution()) _printf0_("   updating vertices positions\n");
 
 	/*get vertex vectors for bed and thickness: */
@@ -1740,5 +1742,5 @@
 		Input* vx_input                        = element->GetInput(VxEnum);                                  _assert_(vx_input);
 		Input* vy_input                        = element->GetInput(VyEnum);                                  _assert_(vy_input);
-		Input* surface_mass_balance_input      = element->GetInput(SurfaceforcingsMassBalanceEnum);          _assert_(surface_mass_balance_input);
+		Input* surface_mass_balance_input      = element->GetInput(SmbMassBalanceEnum);          _assert_(surface_mass_balance_input);
 		Input* groundedice_melting_input       = element->GetInput(BasalforcingsGroundediceMeltingRateEnum); _assert_(groundedice_melting_input);
 		Input* dhdt_input                      = element->GetInput(BalancethicknessThickeningRateEnum);      _assert_(dhdt_input);
Index: /issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp	(revision 19527)
@@ -69,5 +69,5 @@
 	int  hydrology_model,smb_model,materials_type;
 	iomodel->Constant(&hydrology_model,HydrologyModelEnum);
-	iomodel->Constant(&smb_model,SurfaceforcingsEnum);
+	iomodel->Constant(&smb_model,SmbEnum);
 	iomodel->Constant(&materials_type,MaterialsEnum);
 
@@ -93,17 +93,17 @@
 
 			switch(smb_model){
-				case SMBEnum:
+				case SMBforcingEnum:
 					/*Nothing to add*/
 					break;
 				case SMBpddEnum:
-					iomodel->Constant(&this->desfac,SurfaceforcingsDesfacEnum);
-					iomodel->Constant(&this->rlaps,SurfaceforcingsRlapsEnum);
-					iomodel->Constant(&this->rlapslgm,SurfaceforcingsRlapslgmEnum);
+					iomodel->Constant(&this->desfac,SmbDesfacEnum);
+					iomodel->Constant(&this->rlaps,SmbRlapsEnum);
+					iomodel->Constant(&this->rlapslgm,SmbRlapslgmEnum);
 					break;
 				case SMBd18opddEnum:
-					iomodel->Constant(&this->desfac,SurfaceforcingsDesfacEnum);
-					iomodel->Constant(&this->rlaps,SurfaceforcingsRlapsEnum);
-					iomodel->Constant(&this->rlapslgm,SurfaceforcingsRlapslgmEnum);
-					iomodel->Constant(&this->dpermil,SurfaceforcingsDpermilEnum);					
+					iomodel->Constant(&this->desfac,SmbDesfacEnum);
+					iomodel->Constant(&this->rlaps,SmbRlapsEnum);
+					iomodel->Constant(&this->rlapslgm,SmbRlapslgmEnum);
+					iomodel->Constant(&this->dpermil,SmbDpermilEnum);					
 				case SMBgradientsEnum:
 					break;
@@ -365,14 +365,14 @@
 			this->g=constant;
 			break;
-		case  SurfaceforcingsDesfacEnum:
+		case  SmbDesfacEnum:
 			this->desfac=constant;
 			break;
-		case SurfaceforcingsRlapsEnum:
+		case SmbRlapsEnum:
 			this->rlaps=constant;
 			break;
-		case SurfaceforcingsRlapslgmEnum:
+		case SmbRlapslgmEnum:
 			this->rlapslgm=constant;
 			break;
-		case  SurfaceforcingsDpermilEnum:
+		case  SmbDpermilEnum:
 			this->dpermil=constant;
 			break;
@@ -498,8 +498,8 @@
 		case HydrologydcWaterCompressibilityEnum:    return this->water_compressibility;
 		case ConstantsGEnum:                         return this->g;
-		case SurfaceforcingsDesfacEnum:              return this->desfac;
-		case SurfaceforcingsRlapsEnum:               return this->rlaps;
-		case SurfaceforcingsRlapslgmEnum:            return this->rlapslgm;
-		case SurfaceforcingsDpermilEnum:             return this->dpermil;
+		case SmbDesfacEnum:              return this->desfac;
+		case SmbRlapsEnum:               return this->rlaps;
+		case SmbRlapslgmEnum:            return this->rlapslgm;
+		case SmbDpermilEnum:             return this->dpermil;
 		case MaterialsLithosphereShearModulusEnum:   return this->lithosphere_shear_modulus;
 		case MaterialsLithosphereDensityEnum:        return this->lithosphere_density;
Index: /issm/trunk-jpl/src/c/cores/cores.h
===================================================================
--- /issm/trunk-jpl/src/c/cores/cores.h	(revision 19526)
+++ /issm/trunk-jpl/src/c/cores/cores.h	(revision 19527)
@@ -46,4 +46,5 @@
 void dummy_core(FemModel* femmodel);
 void gia_core(FemModel* femmodel);
+void smb_core(FemModel* femmodel);
 void damage_core(FemModel* femmodel);
 IssmDouble objectivefunction(IssmDouble search_scalar,FemModel* femmodel);
Index: /issm/trunk-jpl/src/c/cores/damage_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/damage_core.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/cores/damage_core.cpp	(revision 19527)
@@ -19,5 +19,5 @@
 	char   **requested_outputs = NULL;
 
-	
+			
 	//first recover parameters common to all solutions
 	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
Index: /issm/trunk-jpl/src/c/cores/hydrology_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/hydrology_core.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/cores/hydrology_core.cpp	(revision 19527)
@@ -17,9 +17,12 @@
 	bool       modify_loads=true;
 	bool       isefficientlayer;
+	
 
 	/*first recover parameters common to all solutions*/
 	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
 	femmodel->parameters->FindParam(&hydrology_model,HydrologyModelEnum);
-
+	
+	if(VerboseSolution()) _printf0_("   computing water heads\n");
+			
 	/*first compute slopes: */
 	if (hydrology_model==HydrologyshreveEnum){
Index: /issm/trunk-jpl/src/c/cores/masstransport_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/masstransport_core.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/cores/masstransport_core.cpp	(revision 19527)
@@ -31,7 +31,6 @@
 	femmodel->parameters->FindParam(&stabilization,MasstransportStabilizationEnum);
 	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,MasstransportRequestedOutputsEnum);
-
-	/*Calculate new Surface Mass Balance (SMB)*/
-	SurfaceMassBalancex(femmodel);
+			
+	if(VerboseSolution()) _printf0_("   computing mass transport\n");
 
 	/*Transport mass or free surface*/
Index: /issm/trunk-jpl/src/c/cores/smb_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/smb_core.cpp	(revision 19527)
+++ /issm/trunk-jpl/src/c/cores/smb_core.cpp	(revision 19527)
@@ -0,0 +1,92 @@
+/*!\file: smb_core.cpp
+ * \brief: core of the smb 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 smb_core(FemModel* femmodel){
+
+	/*parameters: */
+	int    smb_model;
+	int    numoutputs;
+	bool   save_results;
+	int    solution_type;
+	char** requested_outputs = NULL;
+
+	/*recover parameters: */
+	femmodel->parameters->FindParam(&smb_model,SmbEnum);
+	femmodel->parameters->FindParam(&save_results,SaveResultsEnum);
+	femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum);
+	femmodel->parameters->FindParam(&numoutputs,SmbNumRequestedOutputsEnum);
+	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,SmbRequestedOutputsEnum);
+			
+	if(VerboseSolution()) _printf0_("   computing smb \n");
+
+	/*branch to correct module*/
+	switch(smb_model){
+		case SMBforcingEnum:
+			/*Nothing to be done*/
+			break;
+		case SMBpddEnum:
+			bool isdelta18o,ismungsm;
+			femmodel->parameters->FindParam(&isdelta18o,SmbIsdelta18oEnum);
+			femmodel->parameters->FindParam(&ismungsm,SmbIsmungsmEnum);
+			if(isdelta18o){
+				if(VerboseSolution()) _printf0_("   call Delta18oParameterization module\n");
+				Delta18oParameterizationx(femmodel);
+			} 
+			if(ismungsm){
+				if(VerboseSolution()) _printf0_("   call MungsmtpParameterization module\n");
+				MungsmtpParameterizationx(femmodel);
+			} 
+			if(VerboseSolution()) _printf0_("   call positive degree day module\n");
+			PositiveDegreeDayx(femmodel);
+			break;
+		case SMBd18opddEnum:
+			bool isd18opd;
+			femmodel->parameters->FindParam(&isd18opd,SmbIsd18opdEnum);
+			if(isd18opd){
+				if(VerboseSolution()) _printf0_("   call Delta18opdParameterization module\n");
+				Delta18opdParameterizationx(femmodel);
+				if(VerboseSolution()) _printf0_("   call positive degree day module\n");
+				PositiveDegreeDayx(femmodel);
+			} 
+			break;
+		case SMBgradientsEnum:
+			if(VerboseSolution())_printf0_("	call smb gradients module\n");
+			SmbGradientsx(femmodel);
+			break;
+		case SMBhenningEnum:
+			if(VerboseSolution())_printf0_("  call smb Henning module\n");
+			SmbHenningx(femmodel);
+			break;
+		case SMBcomponentsEnum:
+			if(VerboseSolution())_printf0_("  call smb Components module\n");
+			SmbComponentsx(femmodel);
+			break;
+		case SMBmeltcomponentsEnum:
+			if(VerboseSolution())_printf0_("  call smb Melt Components module\n");
+			SmbMeltComponentsx(femmodel);
+			break;
+		case SMBgcmEnum:
+			/*Nothing to be done*/
+			break;
+		default:
+			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
+	}
+
+	if(save_results){
+		if(VerboseSolution()) _printf0_("   saving results\n");
+		femmodel->RequestedOutputsx(&femmodel->results,requested_outputs,numoutputs);
+	}
+
+	if(solution_type==SmbSolutionEnum)femmodel->RequestedDependentsx();
+
+	/*Free ressources:*/
+	if(numoutputs){for(int i=0;i<numoutputs;i++){xDelete<char>(requested_outputs[i]);} xDelete<char*>(requested_outputs);}
+}
Index: /issm/trunk-jpl/src/c/cores/stressbalance_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/stressbalance_core.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/cores/stressbalance_core.cpp	(revision 19527)
@@ -22,4 +22,5 @@
 	char     **requested_outputs = NULL;
 	Analysis  *analysis          = NULL;
+			
 
 	/* recover parameters:*/
@@ -34,4 +35,6 @@
 	femmodel->parameters->FindParam(&numoutputs,StressbalanceNumRequestedOutputsEnum);
 	if(numoutputs) femmodel->parameters->FindParam(&requested_outputs,&numoutputs,StressbalanceRequestedOutputsEnum);
+	
+	if(VerboseSolution()) _printf0_("   computing new velocity\n");
 
 	/*Compute slopes if necessary */
Index: /issm/trunk-jpl/src/c/cores/transient_core.cpp
===================================================================
--- /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/cores/transient_core.cpp	(revision 19527)
@@ -21,5 +21,5 @@
 	/*parameters: */
 	IssmDouble starttime,finaltime,dt,yts;
-	bool       isstressbalance,ismasstransport,isFS,isthermal,isgroundingline,isgia,islevelset,isdamageevolution,ishydrology,iscalving;
+	bool       isstressbalance,ismasstransport,issmb,isFS,isthermal,isgroundingline,isgia,islevelset,isdamageevolution,ishydrology,iscalving;
 	bool       save_results,dakota_analysis;
 	bool       time_adapt;
@@ -48,4 +48,5 @@
 	femmodel->parameters->FindParam(&isstressbalance,TransientIsstressbalanceEnum);
 	femmodel->parameters->FindParam(&ismasstransport,TransientIsmasstransportEnum);
+	femmodel->parameters->FindParam(&issmb,TransientIssmbEnum);
 	femmodel->parameters->FindParam(&isthermal,TransientIsthermalEnum);
 	femmodel->parameters->FindParam(&isgia,TransientIsgiaEnum);
@@ -56,5 +57,5 @@
 	femmodel->parameters->FindParam(&isFS,FlowequationIsFSEnum);
 	femmodel->parameters->FindParam(&iscalving,TransientIscalvingEnum);
-	femmodel->parameters->FindParam(&smb_model,SurfaceforcingsEnum);
+	femmodel->parameters->FindParam(&smb_model,SmbEnum);
 	if(isgroundingline) femmodel->parameters->FindParam(&groundingline_migration,GroundinglineMigrationEnum);
 	femmodel->parameters->FindParam(&numoutputs,TransientNumRequestedOutputsEnum);
@@ -86,5 +87,5 @@
 		femmodel->parameters->SetParam(save_results,SaveResultsEnum);
 
-		if(isthermal && domaintype==Domain3DEnum){
+		if(isthermal && domaintype==Domain3DEnum){ 
 			if(VerboseSolution()) _printf0_("   computing thermal regime\n");
 			if(smb_model==SMBpddEnum) ResetBoundaryConditions(femmodel,ThermalAnalysisEnum);
@@ -93,18 +94,9 @@
 		}
 
-		if(ishydrology){
-			if(VerboseSolution()) _printf0_("   computing water heads\n");
-			hydrology_core(femmodel);
-		}
+		if(ishydrology) hydrology_core(femmodel);
 
-		if(isstressbalance){
-			if(VerboseSolution()) _printf0_("   computing new velocity\n");
-			stressbalance_core(femmodel);
-		}
+		if(isstressbalance) stressbalance_core(femmodel);
 
-		if(isdamageevolution){
-			if(VerboseSolution()) _printf0_("   computing damage\n");
-			damage_core(femmodel);
-		}
+		if(isdamageevolution) damage_core(femmodel);
 
 		if(islevelset){
@@ -137,8 +129,8 @@
 		}
 
+		if(issmb)smb_core(femmodel);
+
 		if(ismasstransport){
-			if(VerboseSolution()) _printf0_("   computing new thickness\n");
 			masstransport_core(femmodel);
-			if(VerboseSolution()) _printf0_("   updating vertices positions\n");
 			femmodel->UpdateVertexPositionsx();
 		}
Index: /issm/trunk-jpl/src/c/main/esmfbinders.cpp
===================================================================
--- /issm/trunk-jpl/src/c/main/esmfbinders.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/main/esmfbinders.cpp	(revision 19527)
@@ -32,5 +32,5 @@
 
 		/*Some specific code here for the binding: */
-		femmodel->parameters->SetParam(SMBgcmEnum,SurfaceforcingsEnum); //bypass SMB model, will be provided by GCM!
+		femmodel->parameters->SetParam(SMBgcmEnum,SmbEnum); //bypass SMB model, will be provided by GCM!
 	
 		/*Restart file: */
@@ -82,5 +82,5 @@
 
 						/*Add into the element as new forcing :*/
-						element->inputs->AddInput(new DoubleInput(SurfaceforcingsMassBalanceEnum,smbforcing));
+						element->inputs->AddInput(new DoubleInput(SmbMassBalanceEnum,smbforcing));
 
 						}
Index: /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateParameters.cpp	(revision 19527)
@@ -77,4 +77,5 @@
 		parameters->AddObject(iomodel->CopyConstantObject(TransientIsstressbalanceEnum));
 		parameters->AddObject(iomodel->CopyConstantObject(TransientIsmasstransportEnum));
+		parameters->AddObject(iomodel->CopyConstantObject(TransientIssmbEnum));
 		parameters->AddObject(iomodel->CopyConstantObject(TransientIsthermalEnum));
 		parameters->AddObject(iomodel->CopyConstantObject(TransientIsgroundinglineEnum));
@@ -99,57 +100,57 @@
 
 	/*Surface mass balance parameters*/
-	parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsEnum));
-	iomodel->Constant(&smb_model,SurfaceforcingsEnum);
+	parameters->AddObject(iomodel->CopyConstantObject(SmbEnum));
+	iomodel->Constant(&smb_model,SmbEnum);
 	iomodel->Constant(&interp,TimesteppingInterpForcingsEnum);
 	switch(smb_model){
-		case SMBEnum:
+		case SMBforcingEnum:
 			/*Nothing to add to parameters*/
 			break;
 		case SMBpddEnum:
-			parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIsdelta18oEnum));
-			parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIsmungsmEnum));
-			parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsDesfacEnum));
-			parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsRlapsEnum));
-			parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsRlapslgmEnum));
-			iomodel->Constant(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
-			iomodel->Constant(&ismungsm,SurfaceforcingsIsmungsmEnum);
+			parameters->AddObject(iomodel->CopyConstantObject(SmbIsdelta18oEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbIsmungsmEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbDesfacEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbRlapsEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbRlapslgmEnum));
+			iomodel->Constant(&isdelta18o,SmbIsdelta18oEnum);
+			iomodel->Constant(&ismungsm,SmbIsmungsmEnum);
 
 			if(ismungsm){
-			  iomodel->FetchData(&temp,&N,&M,SurfaceforcingsPfacEnum); _assert_(N==2);
-			  parameters->AddObject(new TransientParam(SurfaceforcingsPfacEnum,&temp[0],&temp[M],interp,M));
-			  iomodel->DeleteData(temp,SurfaceforcingsPfacEnum);
+			  iomodel->FetchData(&temp,&N,&M,SmbPfacEnum); _assert_(N==2);
+			  parameters->AddObject(new TransientParam(SmbPfacEnum,&temp[0],&temp[M],interp,M));
+			  iomodel->DeleteData(temp,SmbPfacEnum);
 			
-			  iomodel->FetchData(&temp,&N,&M,SurfaceforcingsTdiffEnum); _assert_(N==2);
-			  parameters->AddObject(new TransientParam(SurfaceforcingsTdiffEnum,&temp[0],&temp[M],interp,M));
-			  iomodel->DeleteData(temp,SurfaceforcingsTdiffEnum);
-
-			  iomodel->FetchData(&temp,&N,&M,SurfaceforcingsSealevEnum); _assert_(N==2);
-			  parameters->AddObject(new TransientParam(SurfaceforcingsSealevEnum,&temp[0],&temp[M],interp,M));
-			  iomodel->DeleteData(temp,SurfaceforcingsSealevEnum);
+			  iomodel->FetchData(&temp,&N,&M,SmbTdiffEnum); _assert_(N==2);
+			  parameters->AddObject(new TransientParam(SmbTdiffEnum,&temp[0],&temp[M],interp,M));
+			  iomodel->DeleteData(temp,SmbTdiffEnum);
+
+			  iomodel->FetchData(&temp,&N,&M,SmbSealevEnum); _assert_(N==2);
+			  parameters->AddObject(new TransientParam(SmbSealevEnum,&temp[0],&temp[M],interp,M));
+			  iomodel->DeleteData(temp,SmbSealevEnum);
 			}
 			if(isdelta18o){
-				iomodel->FetchData(&temp,&N,&M,SurfaceforcingsDelta18oEnum); _assert_(N==2);
-				parameters->AddObject(new TransientParam(SurfaceforcingsDelta18oEnum,&temp[0],&temp[M],interp,M));
-				iomodel->DeleteData(temp,SurfaceforcingsDelta18oEnum);
-
-				iomodel->FetchData(&temp,&N,&M,SurfaceforcingsDelta18oSurfaceEnum); _assert_(N==2);
-				parameters->AddObject(new TransientParam(SurfaceforcingsDelta18oSurfaceEnum,&temp[0],&temp[M],interp,M));
-				iomodel->DeleteData(temp,SurfaceforcingsDelta18oSurfaceEnum);
+				iomodel->FetchData(&temp,&N,&M,SmbDelta18oEnum); _assert_(N==2);
+				parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,M));
+				iomodel->DeleteData(temp,SmbDelta18oEnum);
+
+				iomodel->FetchData(&temp,&N,&M,SmbDelta18oSurfaceEnum); _assert_(N==2);
+				parameters->AddObject(new TransientParam(SmbDelta18oSurfaceEnum,&temp[0],&temp[M],interp,M));
+				iomodel->DeleteData(temp,SmbDelta18oSurfaceEnum);
 			}
 			break;
 		case SMBd18opddEnum:
-			parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIsmungsmEnum));
-			parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsIsd18opdEnum));
-			parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsDesfacEnum));
-			parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsRlapsEnum));
-			parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsRlapslgmEnum));
-			iomodel->Constant(&ismungsm,SurfaceforcingsIsmungsmEnum);
-			iomodel->Constant(&isd18opd,SurfaceforcingsIsd18opdEnum);
+			parameters->AddObject(iomodel->CopyConstantObject(SmbIsmungsmEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbIsd18opdEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbDesfacEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbRlapsEnum));
+			parameters->AddObject(iomodel->CopyConstantObject(SmbRlapslgmEnum));
+			iomodel->Constant(&ismungsm,SmbIsmungsmEnum);
+			iomodel->Constant(&isd18opd,SmbIsd18opdEnum);
 			if(isd18opd){
-				iomodel->FetchData(&temp,&N,&M,SurfaceforcingsDelta18oEnum); _assert_(N==2);
-				parameters->AddObject(new TransientParam(SurfaceforcingsDelta18oEnum,&temp[0],&temp[M],interp,M));
-				iomodel->DeleteData(temp,SurfaceforcingsDelta18oEnum);
+				iomodel->FetchData(&temp,&N,&M,SmbDelta18oEnum); _assert_(N==2);
+				parameters->AddObject(new TransientParam(SmbDelta18oEnum,&temp[0],&temp[M],interp,M));
+				iomodel->DeleteData(temp,SmbDelta18oEnum);
 				
-				parameters->AddObject(iomodel->CopyConstantObject(SurfaceforcingsDpermilEnum));
+				parameters->AddObject(iomodel->CopyConstantObject(SmbDpermilEnum));
 			}
 			break;
Index: /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp
===================================================================
--- /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/SurfaceMassBalancex.cpp	(revision 19527)
@@ -7,65 +7,4 @@
 #include "../../toolkits/toolkits.h"
 
-void SurfaceMassBalancex(FemModel* femmodel){/*{{{*/
-
-	/*Intermediaties*/
-	int  smb_model;
-	bool isdelta18o,ismungsm,isd18opd;
-
-	/*First, get SMB model from parameters*/
-	femmodel->parameters->FindParam(&smb_model,SurfaceforcingsEnum);
-
-	/*branch to correct module*/
-	switch(smb_model){
-		case SMBEnum:
-			/*Nothing to be done*/
-			break;
-		case SMBpddEnum:
-			femmodel->parameters->FindParam(&isdelta18o,SurfaceforcingsIsdelta18oEnum);
-			femmodel->parameters->FindParam(&ismungsm,SurfaceforcingsIsmungsmEnum);
-			if(isdelta18o){
-				if(VerboseSolution()) _printf0_("   call Delta18oParameterization module\n");
-				Delta18oParameterizationx(femmodel);
-			} 
-			if(ismungsm){
-				if(VerboseSolution()) _printf0_("   call MungsmtpParameterization module\n");
-				MungsmtpParameterizationx(femmodel);
-			} 
-			if(VerboseSolution()) _printf0_("   call positive degree day module\n");
-			PositiveDegreeDayx(femmodel);
-			break;
-		case SMBd18opddEnum:
-			femmodel->parameters->FindParam(&isd18opd,SurfaceforcingsIsd18opdEnum);
-			if(isd18opd){
-				if(VerboseSolution()) _printf0_("   call Delta18opdParameterization module\n");
-				Delta18opdParameterizationx(femmodel);
-				if(VerboseSolution()) _printf0_("   call positive degree day module\n");
-				PositiveDegreeDayx(femmodel);
-			} 
-			break;
-		case SMBgradientsEnum:
-			if(VerboseSolution())_printf0_("	call smb gradients module\n");
-			SmbGradientsx(femmodel);
-			break;
-		case SMBhenningEnum:
-			if(VerboseSolution())_printf0_("  call smb Henning module\n");
-			SmbHenningx(femmodel);
-			break;
-		case SMBcomponentsEnum:
-			if(VerboseSolution())_printf0_("  call smb Components module\n");
-			SmbComponentsx(femmodel);
-			break;
-		case SMBmeltcomponentsEnum:
-			if(VerboseSolution())_printf0_("  call smb Melt Components module\n");
-			SmbMeltComponentsx(femmodel);
-			break;
-		case SMBgcmEnum:
-			/*Nothing to be done*/
-			break;
-		default:
-			_error_("Surface mass balance model "<<EnumToStringx(smb_model)<<" not supported yet");
-	}
-
-}/*}}}*/
 
 void SmbGradientsx(FemModel* femmodel){/*{{{*/
@@ -93,8 +32,8 @@
 
 		/*Recover SmbGradients*/
-		element->GetInputListOnVertices(Href,SurfaceforcingsHrefEnum);
-		element->GetInputListOnVertices(Smbref,SurfaceforcingsSmbrefEnum);
-		element->GetInputListOnVertices(b_pos,SurfaceforcingsBPosEnum);
-		element->GetInputListOnVertices(b_neg,SurfaceforcingsBNegEnum);
+		element->GetInputListOnVertices(Href,SmbHrefEnum);
+		element->GetInputListOnVertices(Smbref,SmbSmbrefEnum);
+		element->GetInputListOnVertices(b_pos,SmbBPosEnum);
+		element->GetInputListOnVertices(b_neg,SmbBNegEnum);
 
 		/*Recover surface elevation at vertices: */
@@ -117,5 +56,5 @@
 
 		/*Add input to element and Free memory*/
-		element->AddInput(SurfaceforcingsMassBalanceEnum,smb,P1Enum);
+		element->AddInput(SmbMassBalanceEnum,smb,P1Enum);
 		xDelete<IssmDouble>(Href);
 		xDelete<IssmDouble>(Smbref);
@@ -187,5 +126,5 @@
 
 	// Get ismungsm parameter
-	femmodel->parameters->FindParam(&ismungsm,SurfaceforcingsIsmungsmEnum);
+	femmodel->parameters->FindParam(&ismungsm,SmbIsmungsmEnum);
 
 	/* initialize PDD (creation of a lookup table)*/
@@ -279,5 +218,5 @@
 		IssmDouble* smblist     = xNew<IssmDouble>(numvertices);
 		element->GetInputListOnVertices(surfacelist,SurfaceEnum);
-		element->GetInputListOnVertices(smblistref,SurfaceforcingsSmbrefEnum);
+		element->GetInputListOnVertices(smblistref,SmbSmbrefEnum);
 
 		/*Loop over all vertices of element and correct SMB as a function of altitude z*/
@@ -311,5 +250,5 @@
 
 		/*Add input to element and Free memory*/
-		element->AddInput(SurfaceforcingsMassBalanceEnum,smblist,P1Enum);
+		element->AddInput(SmbMassBalanceEnum,smblist,P1Enum);
 		xDelete<IssmDouble>(surfacelist);
 		xDelete<IssmDouble>(smblistref);
@@ -340,7 +279,7 @@
 
 		/*Recover Smb Components*/
-		element->GetInputListOnVertices(acc,SurfaceforcingsAccumulationEnum);
-		element->GetInputListOnVertices(evap,SurfaceforcingsEvaporationEnum);
-		element->GetInputListOnVertices(runoff,SurfaceforcingsRunoffEnum);
+		element->GetInputListOnVertices(acc,SmbAccumulationEnum);
+		element->GetInputListOnVertices(evap,SmbEvaporationEnum);
+		element->GetInputListOnVertices(runoff,SmbRunoffEnum);
 
 		// loop over all vertices
@@ -350,5 +289,5 @@
 
 		/*Add input to element and Free memory*/
-		element->AddInput(SurfaceforcingsMassBalanceEnum,smb,P1Enum);
+		element->AddInput(SmbMassBalanceEnum,smb,P1Enum);
 		xDelete<IssmDouble>(acc);
 		xDelete<IssmDouble>(evap);
@@ -382,8 +321,8 @@
 
 		/*Recover Smb Components*/
-		element->GetInputListOnVertices(acc,SurfaceforcingsAccumulationEnum);
-		element->GetInputListOnVertices(evap,SurfaceforcingsEvaporationEnum);
-		element->GetInputListOnVertices(melt,SurfaceforcingsMeltEnum);
-		element->GetInputListOnVertices(refreeze,SurfaceforcingsRefreezeEnum);
+		element->GetInputListOnVertices(acc,SmbAccumulationEnum);
+		element->GetInputListOnVertices(evap,SmbEvaporationEnum);
+		element->GetInputListOnVertices(melt,SmbMeltEnum);
+		element->GetInputListOnVertices(refreeze,SmbRefreezeEnum);
 
 		// loop over all vertices
@@ -393,5 +332,5 @@
 
 		/*Add input to element and Free memory*/
-		element->AddInput(SurfaceforcingsMassBalanceEnum,smb,P1Enum);
+		element->AddInput(SmbMassBalanceEnum,smb,P1Enum);
 		xDelete<IssmDouble>(acc);
 		xDelete<IssmDouble>(evap);
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 19526)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 19527)
@@ -328,4 +328,5 @@
 	TimesteppingTimeStepEnum,
 	TimesteppingInterpForcingsEnum,
+	TransientIssmbEnum,
 	TransientIsstressbalanceEnum,
 	TransientIsgroundinglineEnum,
@@ -347,47 +348,50 @@
 	BalancethicknessD0Enum,
 	/*}}}*/
-	/*Surfaceforcings{{{*/
-	SurfaceforcingsEnum,
-	SMBEnum,
-	SurfaceforcingsMassBalanceEnum,
+	/*Smb{{{*/
+	SmbEnum,
+	SmbSolutionEnum,
+	SmbNumRequestedOutputsEnum,
+	SmbRequestedOutputsEnum,
+	SMBforcingEnum,
+	SmbMassBalanceEnum,
 	SMBpddEnum,	
-	SurfaceforcingsDelta18oEnum,
-	SurfaceforcingsDelta18oSurfaceEnum,
-	SurfaceforcingsIsdelta18oEnum,
-	SurfaceforcingsIsmungsmEnum,
-	SurfaceforcingsIsd18opdEnum,
-	SurfaceforcingsPrecipitationsPresentdayEnum,
-	SurfaceforcingsPrecipitationsLgmEnum,
-	SurfaceforcingsTemperaturesPresentdayEnum,
-	SurfaceforcingsTemperaturesLgmEnum,
-	SurfaceforcingsPrecipitationEnum,
-	SurfaceforcingsDesfacEnum,
-	SurfaceforcingsS0pEnum,
-	SurfaceforcingsS0tEnum,
-	SurfaceforcingsRlapsEnum,
-	SurfaceforcingsRlapslgmEnum,
-	SurfaceforcingsPfacEnum,
-	SurfaceforcingsTdiffEnum,
-	SurfaceforcingsSealevEnum,
+	SmbDelta18oEnum,
+	SmbDelta18oSurfaceEnum,
+	SmbIsdelta18oEnum,
+	SmbIsmungsmEnum,
+	SmbIsd18opdEnum,
+	SmbPrecipitationsPresentdayEnum,
+	SmbPrecipitationsLgmEnum,
+	SmbTemperaturesPresentdayEnum,
+	SmbTemperaturesLgmEnum,
+	SmbPrecipitationEnum,
+	SmbDesfacEnum,
+	SmbS0pEnum,
+	SmbS0tEnum,
+	SmbRlapsEnum,
+	SmbRlapslgmEnum,
+	SmbPfacEnum,
+	SmbTdiffEnum,
+	SmbSealevEnum,
 	SMBd18opddEnum,
-	SurfaceforcingsDpermilEnum,
+	SmbDpermilEnum,
 	SMBgradientsEnum,
-	SurfaceforcingsMonthlytemperaturesEnum,
-	SurfaceforcingsHrefEnum,
-	SurfaceforcingsSmbrefEnum,
-	SurfaceforcingsBPosEnum,
-	SurfaceforcingsBNegEnum,
+	SmbMonthlytemperaturesEnum,
+	SmbHrefEnum,
+	SmbSmbrefEnum,
+	SmbBPosEnum,
+	SmbBNegEnum,
 	SMBhenningEnum,
 	SMBcomponentsEnum,
-	SurfaceforcingsAccumulationEnum,
-	SurfaceforcingsEvaporationEnum,
-	SurfaceforcingsRunoffEnum,
+	SmbAccumulationEnum,
+	SmbEvaporationEnum,
+	SmbRunoffEnum,
 	SMBmeltcomponentsEnum,
-	SurfaceforcingsMeltEnum,
-	SurfaceforcingsRefreezeEnum,
+	SmbMeltEnum,
+	SmbRefreezeEnum,
 	SMBgcmEnum,
 	/*TO BE REMOVED*/
-	SurfaceforcingsIspddEnum,
-	SurfaceforcingsIssmbgradientsEnum,
+	SmbIspddEnum,
+	SmbIssmbgradientsEnum,
 	/*}}}*/
 	/*Solutions and Analyses{{{ */
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 19527)
@@ -334,4 +334,5 @@
 		case TimesteppingTimeStepEnum : return "TimesteppingTimeStep";
 		case TimesteppingInterpForcingsEnum : return "TimesteppingInterpForcings";
+		case TransientIssmbEnum : return "TransientIssmb";
 		case TransientIsstressbalanceEnum : return "TransientIsstressbalance";
 		case TransientIsgroundinglineEnum : return "TransientIsgroundingline";
@@ -352,45 +353,48 @@
 		case BalancethicknessOmegaEnum : return "BalancethicknessOmega";
 		case BalancethicknessD0Enum : return "BalancethicknessD0";
-		case SurfaceforcingsEnum : return "Surfaceforcings";
-		case SMBEnum : return "SMB";
-		case SurfaceforcingsMassBalanceEnum : return "SurfaceforcingsMassBalance";
+		case SmbEnum : return "Smb";
+		case SmbSolutionEnum : return "SmbSolution";
+		case SmbNumRequestedOutputsEnum : return "SmbNumRequestedOutputs";
+		case SmbRequestedOutputsEnum : return "SmbRequestedOutputs";
+		case SMBforcingEnum : return "SMBforcing";
+		case SmbMassBalanceEnum : return "SmbMassBalance";
 		case SMBpddEnum : return "SMBpdd";
-		case SurfaceforcingsDelta18oEnum : return "SurfaceforcingsDelta18o";
-		case SurfaceforcingsDelta18oSurfaceEnum : return "SurfaceforcingsDelta18oSurface";
-		case SurfaceforcingsIsdelta18oEnum : return "SurfaceforcingsIsdelta18o";
-		case SurfaceforcingsIsmungsmEnum : return "SurfaceforcingsIsmungsm";
-		case SurfaceforcingsIsd18opdEnum : return "SurfaceforcingsIsd18opd";
-		case SurfaceforcingsPrecipitationsPresentdayEnum : return "SurfaceforcingsPrecipitationsPresentday";
-		case SurfaceforcingsPrecipitationsLgmEnum : return "SurfaceforcingsPrecipitationsLgm";
-		case SurfaceforcingsTemperaturesPresentdayEnum : return "SurfaceforcingsTemperaturesPresentday";
-		case SurfaceforcingsTemperaturesLgmEnum : return "SurfaceforcingsTemperaturesLgm";
-		case SurfaceforcingsPrecipitationEnum : return "SurfaceforcingsPrecipitation";
-		case SurfaceforcingsDesfacEnum : return "SurfaceforcingsDesfac";
-		case SurfaceforcingsS0pEnum : return "SurfaceforcingsS0p";
-		case SurfaceforcingsS0tEnum : return "SurfaceforcingsS0t";
-		case SurfaceforcingsRlapsEnum : return "SurfaceforcingsRlaps";
-		case SurfaceforcingsRlapslgmEnum : return "SurfaceforcingsRlapslgm";
-		case SurfaceforcingsPfacEnum : return "SurfaceforcingsPfac";
-		case SurfaceforcingsTdiffEnum : return "SurfaceforcingsTdiff";
-		case SurfaceforcingsSealevEnum : return "SurfaceforcingsSealev";
+		case SmbDelta18oEnum : return "SmbDelta18o";
+		case SmbDelta18oSurfaceEnum : return "SmbDelta18oSurface";
+		case SmbIsdelta18oEnum : return "SmbIsdelta18o";
+		case SmbIsmungsmEnum : return "SmbIsmungsm";
+		case SmbIsd18opdEnum : return "SmbIsd18opd";
+		case SmbPrecipitationsPresentdayEnum : return "SmbPrecipitationsPresentday";
+		case SmbPrecipitationsLgmEnum : return "SmbPrecipitationsLgm";
+		case SmbTemperaturesPresentdayEnum : return "SmbTemperaturesPresentday";
+		case SmbTemperaturesLgmEnum : return "SmbTemperaturesLgm";
+		case SmbPrecipitationEnum : return "SmbPrecipitation";
+		case SmbDesfacEnum : return "SmbDesfac";
+		case SmbS0pEnum : return "SmbS0p";
+		case SmbS0tEnum : return "SmbS0t";
+		case SmbRlapsEnum : return "SmbRlaps";
+		case SmbRlapslgmEnum : return "SmbRlapslgm";
+		case SmbPfacEnum : return "SmbPfac";
+		case SmbTdiffEnum : return "SmbTdiff";
+		case SmbSealevEnum : return "SmbSealev";
 		case SMBd18opddEnum : return "SMBd18opdd";
-		case SurfaceforcingsDpermilEnum : return "SurfaceforcingsDpermil";
+		case SmbDpermilEnum : return "SmbDpermil";
 		case SMBgradientsEnum : return "SMBgradients";
-		case SurfaceforcingsMonthlytemperaturesEnum : return "SurfaceforcingsMonthlytemperatures";
-		case SurfaceforcingsHrefEnum : return "SurfaceforcingsHref";
-		case SurfaceforcingsSmbrefEnum : return "SurfaceforcingsSmbref";
-		case SurfaceforcingsBPosEnum : return "SurfaceforcingsBPos";
-		case SurfaceforcingsBNegEnum : return "SurfaceforcingsBNeg";
+		case SmbMonthlytemperaturesEnum : return "SmbMonthlytemperatures";
+		case SmbHrefEnum : return "SmbHref";
+		case SmbSmbrefEnum : return "SmbSmbref";
+		case SmbBPosEnum : return "SmbBPos";
+		case SmbBNegEnum : return "SmbBNeg";
 		case SMBhenningEnum : return "SMBhenning";
 		case SMBcomponentsEnum : return "SMBcomponents";
-		case SurfaceforcingsAccumulationEnum : return "SurfaceforcingsAccumulation";
-		case SurfaceforcingsEvaporationEnum : return "SurfaceforcingsEvaporation";
-		case SurfaceforcingsRunoffEnum : return "SurfaceforcingsRunoff";
+		case SmbAccumulationEnum : return "SmbAccumulation";
+		case SmbEvaporationEnum : return "SmbEvaporation";
+		case SmbRunoffEnum : return "SmbRunoff";
 		case SMBmeltcomponentsEnum : return "SMBmeltcomponents";
-		case SurfaceforcingsMeltEnum : return "SurfaceforcingsMelt";
-		case SurfaceforcingsRefreezeEnum : return "SurfaceforcingsRefreeze";
+		case SmbMeltEnum : return "SmbMelt";
+		case SmbRefreezeEnum : return "SmbRefreeze";
 		case SMBgcmEnum : return "SMBgcm";
-		case SurfaceforcingsIspddEnum : return "SurfaceforcingsIspdd";
-		case SurfaceforcingsIssmbgradientsEnum : return "SurfaceforcingsIssmbgradients";
+		case SmbIspddEnum : return "SmbIspdd";
+		case SmbIssmbgradientsEnum : return "SmbIssmbgradients";
 		case SolutionTypeEnum : return "SolutionType";
 		case AnalysisTypeEnum : return "AnalysisType";
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 19527)
@@ -340,4 +340,5 @@
 	      else if (strcmp(name,"TimesteppingTimeStep")==0) return TimesteppingTimeStepEnum;
 	      else if (strcmp(name,"TimesteppingInterpForcings")==0) return TimesteppingInterpForcingsEnum;
+	      else if (strcmp(name,"TransientIssmb")==0) return TransientIssmbEnum;
 	      else if (strcmp(name,"TransientIsstressbalance")==0) return TransientIsstressbalanceEnum;
 	      else if (strcmp(name,"TransientIsgroundingline")==0) return TransientIsgroundinglineEnum;
@@ -358,48 +359,51 @@
 	      else if (strcmp(name,"BalancethicknessOmega")==0) return BalancethicknessOmegaEnum;
 	      else if (strcmp(name,"BalancethicknessD0")==0) return BalancethicknessD0Enum;
-	      else if (strcmp(name,"Surfaceforcings")==0) return SurfaceforcingsEnum;
-	      else if (strcmp(name,"SMB")==0) return SMBEnum;
-	      else if (strcmp(name,"SurfaceforcingsMassBalance")==0) return SurfaceforcingsMassBalanceEnum;
+	      else if (strcmp(name,"Smb")==0) return SmbEnum;
+	      else if (strcmp(name,"SmbSolution")==0) return SmbSolutionEnum;
+	      else if (strcmp(name,"SmbNumRequestedOutputs")==0) return SmbNumRequestedOutputsEnum;
+	      else if (strcmp(name,"SmbRequestedOutputs")==0) return SmbRequestedOutputsEnum;
+	      else if (strcmp(name,"SMBforcing")==0) return SMBforcingEnum;
+	      else if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum;
 	      else if (strcmp(name,"SMBpdd")==0) return SMBpddEnum;
-	      else if (strcmp(name,"SurfaceforcingsDelta18o")==0) return SurfaceforcingsDelta18oEnum;
-	      else if (strcmp(name,"SurfaceforcingsDelta18oSurface")==0) return SurfaceforcingsDelta18oSurfaceEnum;
-	      else if (strcmp(name,"SurfaceforcingsIsdelta18o")==0) return SurfaceforcingsIsdelta18oEnum;
-	      else if (strcmp(name,"SurfaceforcingsIsmungsm")==0) return SurfaceforcingsIsmungsmEnum;
-	      else if (strcmp(name,"SurfaceforcingsIsd18opd")==0) return SurfaceforcingsIsd18opdEnum;
-	      else if (strcmp(name,"SurfaceforcingsPrecipitationsPresentday")==0) return SurfaceforcingsPrecipitationsPresentdayEnum;
-	      else if (strcmp(name,"SurfaceforcingsPrecipitationsLgm")==0) return SurfaceforcingsPrecipitationsLgmEnum;
-	      else if (strcmp(name,"SurfaceforcingsTemperaturesPresentday")==0) return SurfaceforcingsTemperaturesPresentdayEnum;
-	      else if (strcmp(name,"SurfaceforcingsTemperaturesLgm")==0) return SurfaceforcingsTemperaturesLgmEnum;
-	      else if (strcmp(name,"SurfaceforcingsPrecipitation")==0) return SurfaceforcingsPrecipitationEnum;
-	      else if (strcmp(name,"SurfaceforcingsDesfac")==0) return SurfaceforcingsDesfacEnum;
-	      else if (strcmp(name,"SurfaceforcingsS0p")==0) return SurfaceforcingsS0pEnum;
-	      else if (strcmp(name,"SurfaceforcingsS0t")==0) return SurfaceforcingsS0tEnum;
-	      else if (strcmp(name,"SurfaceforcingsRlaps")==0) return SurfaceforcingsRlapsEnum;
-	      else if (strcmp(name,"SurfaceforcingsRlapslgm")==0) return SurfaceforcingsRlapslgmEnum;
-	      else if (strcmp(name,"SurfaceforcingsPfac")==0) return SurfaceforcingsPfacEnum;
-	      else if (strcmp(name,"SurfaceforcingsTdiff")==0) return SurfaceforcingsTdiffEnum;
-	      else if (strcmp(name,"SurfaceforcingsSealev")==0) return SurfaceforcingsSealevEnum;
-	      else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum;
-	      else if (strcmp(name,"SurfaceforcingsDpermil")==0) return SurfaceforcingsDpermilEnum;
-	      else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum;
+	      else if (strcmp(name,"SmbDelta18o")==0) return SmbDelta18oEnum;
+	      else if (strcmp(name,"SmbDelta18oSurface")==0) return SmbDelta18oSurfaceEnum;
+	      else if (strcmp(name,"SmbIsdelta18o")==0) return SmbIsdelta18oEnum;
+	      else if (strcmp(name,"SmbIsmungsm")==0) return SmbIsmungsmEnum;
+	      else if (strcmp(name,"SmbIsd18opd")==0) return SmbIsd18opdEnum;
+	      else if (strcmp(name,"SmbPrecipitationsPresentday")==0) return SmbPrecipitationsPresentdayEnum;
+	      else if (strcmp(name,"SmbPrecipitationsLgm")==0) return SmbPrecipitationsLgmEnum;
+	      else if (strcmp(name,"SmbTemperaturesPresentday")==0) return SmbTemperaturesPresentdayEnum;
+	      else if (strcmp(name,"SmbTemperaturesLgm")==0) return SmbTemperaturesLgmEnum;
+	      else if (strcmp(name,"SmbPrecipitation")==0) return SmbPrecipitationEnum;
+	      else if (strcmp(name,"SmbDesfac")==0) return SmbDesfacEnum;
+	      else if (strcmp(name,"SmbS0p")==0) return SmbS0pEnum;
+	      else if (strcmp(name,"SmbS0t")==0) return SmbS0tEnum;
+	      else if (strcmp(name,"SmbRlaps")==0) return SmbRlapsEnum;
+	      else if (strcmp(name,"SmbRlapslgm")==0) return SmbRlapslgmEnum;
+	      else if (strcmp(name,"SmbPfac")==0) return SmbPfacEnum;
+	      else if (strcmp(name,"SmbTdiff")==0) return SmbTdiffEnum;
          else stage=4;
    }
    if(stage==4){
-	      if (strcmp(name,"SurfaceforcingsMonthlytemperatures")==0) return SurfaceforcingsMonthlytemperaturesEnum;
-	      else if (strcmp(name,"SurfaceforcingsHref")==0) return SurfaceforcingsHrefEnum;
-	      else if (strcmp(name,"SurfaceforcingsSmbref")==0) return SurfaceforcingsSmbrefEnum;
-	      else if (strcmp(name,"SurfaceforcingsBPos")==0) return SurfaceforcingsBPosEnum;
-	      else if (strcmp(name,"SurfaceforcingsBNeg")==0) return SurfaceforcingsBNegEnum;
+	      if (strcmp(name,"SmbSealev")==0) return SmbSealevEnum;
+	      else if (strcmp(name,"SMBd18opdd")==0) return SMBd18opddEnum;
+	      else if (strcmp(name,"SmbDpermil")==0) return SmbDpermilEnum;
+	      else if (strcmp(name,"SMBgradients")==0) return SMBgradientsEnum;
+	      else if (strcmp(name,"SmbMonthlytemperatures")==0) return SmbMonthlytemperaturesEnum;
+	      else if (strcmp(name,"SmbHref")==0) return SmbHrefEnum;
+	      else if (strcmp(name,"SmbSmbref")==0) return SmbSmbrefEnum;
+	      else if (strcmp(name,"SmbBPos")==0) return SmbBPosEnum;
+	      else if (strcmp(name,"SmbBNeg")==0) return SmbBNegEnum;
 	      else if (strcmp(name,"SMBhenning")==0) return SMBhenningEnum;
 	      else if (strcmp(name,"SMBcomponents")==0) return SMBcomponentsEnum;
-	      else if (strcmp(name,"SurfaceforcingsAccumulation")==0) return SurfaceforcingsAccumulationEnum;
-	      else if (strcmp(name,"SurfaceforcingsEvaporation")==0) return SurfaceforcingsEvaporationEnum;
-	      else if (strcmp(name,"SurfaceforcingsRunoff")==0) return SurfaceforcingsRunoffEnum;
+	      else if (strcmp(name,"SmbAccumulation")==0) return SmbAccumulationEnum;
+	      else if (strcmp(name,"SmbEvaporation")==0) return SmbEvaporationEnum;
+	      else if (strcmp(name,"SmbRunoff")==0) return SmbRunoffEnum;
 	      else if (strcmp(name,"SMBmeltcomponents")==0) return SMBmeltcomponentsEnum;
-	      else if (strcmp(name,"SurfaceforcingsMelt")==0) return SurfaceforcingsMeltEnum;
-	      else if (strcmp(name,"SurfaceforcingsRefreeze")==0) return SurfaceforcingsRefreezeEnum;
+	      else if (strcmp(name,"SmbMelt")==0) return SmbMeltEnum;
+	      else if (strcmp(name,"SmbRefreeze")==0) return SmbRefreezeEnum;
 	      else if (strcmp(name,"SMBgcm")==0) return SMBgcmEnum;
-	      else if (strcmp(name,"SurfaceforcingsIspdd")==0) return SurfaceforcingsIspddEnum;
-	      else if (strcmp(name,"SurfaceforcingsIssmbgradients")==0) return SurfaceforcingsIssmbgradientsEnum;
+	      else if (strcmp(name,"SmbIspdd")==0) return SmbIspddEnum;
+	      else if (strcmp(name,"SmbIssmbgradients")==0) return SmbIssmbgradientsEnum;
 	      else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;
 	      else if (strcmp(name,"AnalysisType")==0) return AnalysisTypeEnum;
@@ -502,12 +506,12 @@
 	      else if (strcmp(name,"InputToL2Project")==0) return InputToL2ProjectEnum;
 	      else if (strcmp(name,"InputToDepthaverage")==0) return InputToDepthaverageEnum;
-	      else if (strcmp(name,"InputToSmooth")==0) return InputToSmoothEnum;
+         else stage=5;
+   }
+   if(stage==5){
+	      if (strcmp(name,"InputToSmooth")==0) return InputToSmoothEnum;
 	      else if (strcmp(name,"SmoothThicknessMultiplier")==0) return SmoothThicknessMultiplierEnum;
 	      else if (strcmp(name,"IntParam")==0) return IntParamEnum;
 	      else if (strcmp(name,"IntVecParam")==0) return IntVecParamEnum;
-         else stage=5;
-   }
-   if(stage==5){
-	      if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
+	      else if (strcmp(name,"TransientParam")==0) return TransientParamEnum;
 	      else if (strcmp(name,"Matice")==0) return MaticeEnum;
 	      else if (strcmp(name,"Matdamageice")==0) return MatdamageiceEnum;
@@ -625,12 +629,12 @@
 	      else if (strcmp(name,"BasalFriction")==0) return BasalFrictionEnum;
 	      else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum;
-	      else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
+         else stage=6;
+   }
+   if(stage==6){
+	      if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum;
 	      else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;
 	      else if (strcmp(name,"DrivingStressX")==0) return DrivingStressXEnum;
 	      else if (strcmp(name,"DrivingStressY")==0) return DrivingStressYEnum;
-         else stage=6;
-   }
-   if(stage==6){
-	      if (strcmp(name,"SigmaNN")==0) return SigmaNNEnum;
+	      else if (strcmp(name,"SigmaNN")==0) return SigmaNNEnum;
 	      else if (strcmp(name,"StressTensor")==0) return StressTensorEnum;
 	      else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum;
@@ -748,12 +752,12 @@
 	      else if (strcmp(name,"Outputdefinition54")==0) return Outputdefinition54Enum;
 	      else if (strcmp(name,"Outputdefinition55")==0) return Outputdefinition55Enum;
-	      else if (strcmp(name,"Outputdefinition56")==0) return Outputdefinition56Enum;
+         else stage=7;
+   }
+   if(stage==7){
+	      if (strcmp(name,"Outputdefinition56")==0) return Outputdefinition56Enum;
 	      else if (strcmp(name,"Outputdefinition57")==0) return Outputdefinition57Enum;
 	      else if (strcmp(name,"Outputdefinition58")==0) return Outputdefinition58Enum;
 	      else if (strcmp(name,"Outputdefinition59")==0) return Outputdefinition59Enum;
-         else stage=7;
-   }
-   if(stage==7){
-	      if (strcmp(name,"Outputdefinition60")==0) return Outputdefinition60Enum;
+	      else if (strcmp(name,"Outputdefinition60")==0) return Outputdefinition60Enum;
 	      else if (strcmp(name,"Outputdefinition61")==0) return Outputdefinition61Enum;
 	      else if (strcmp(name,"Outputdefinition62")==0) return Outputdefinition62Enum;
@@ -871,12 +875,12 @@
 	      else if (strcmp(name,"RootPath")==0) return RootPathEnum;
 	      else if (strcmp(name,"OutputFileName")==0) return OutputFileNameEnum;
-	      else if (strcmp(name,"InputFileName")==0) return InputFileNameEnum;
+         else stage=8;
+   }
+   if(stage==8){
+	      if (strcmp(name,"InputFileName")==0) return InputFileNameEnum;
 	      else if (strcmp(name,"LockFileName")==0) return LockFileNameEnum;
 	      else if (strcmp(name,"RestartFileName")==0) return RestartFileNameEnum;
 	      else if (strcmp(name,"ToolkitsOptionsAnalyses")==0) return ToolkitsOptionsAnalysesEnum;
-         else stage=8;
-   }
-   if(stage==8){
-	      if (strcmp(name,"ToolkitsOptionsStrings")==0) return ToolkitsOptionsStringsEnum;
+	      else if (strcmp(name,"ToolkitsOptionsStrings")==0) return ToolkitsOptionsStringsEnum;
 	      else if (strcmp(name,"QmuErrName")==0) return QmuErrNameEnum;
 	      else if (strcmp(name,"QmuInName")==0) return QmuInNameEnum;
Index: /issm/trunk-jpl/src/c/shared/Enum/Synchronize.sh
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Synchronize.sh	(revision 19526)
+++ /issm/trunk-jpl/src/c/shared/Enum/Synchronize.sh	(revision 19527)
@@ -202,4 +202,5 @@
 
 for NAMEENUM in $(cat temp); do
+	echo $NAMEENUM
 
 	#Get name and enum of the line i
Index: /issm/trunk-jpl/src/m/boundaryconditions/SetIceSheetBC.m
===================================================================
--- /issm/trunk-jpl/src/m/boundaryconditions/SetIceSheetBC.m	(revision 19526)
+++ /issm/trunk-jpl/src/m/boundaryconditions/SetIceSheetBC.m	(revision 19527)
@@ -30,5 +30,5 @@
 
 %Initialize surface and basal forcings
-md.surfaceforcings = initialize(md.surfaceforcings,md);
+md.smb = initialize(md.smb,md);
 md.basalforcings   = initialize(md.basalforcings,md);
 
Index: /issm/trunk-jpl/src/m/boundaryconditions/SetIceSheetBC.py
===================================================================
--- /issm/trunk-jpl/src/m/boundaryconditions/SetIceSheetBC.py	(revision 19526)
+++ /issm/trunk-jpl/src/m/boundaryconditions/SetIceSheetBC.py	(revision 19527)
@@ -34,6 +34,6 @@
 	#No ice front -> do nothing
 
-	#Create zeros basalforcings and surfaceforcings
-	md.surfaceforcings.initialize(md)
+	#Create zeros basalforcings and smb
+	md.smb.initialize(md)
 	md.basalforcings.initialize(md)
 
Index: /issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.m
===================================================================
--- /issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.m	(revision 19526)
+++ /issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.m	(revision 19527)
@@ -63,5 +63,5 @@
 
 %Initialize surface and basal forcings
-md.surfaceforcings = initialize(md.surfaceforcings,md);
+md.smb = initialize(md.smb,md);
 md.basalforcings   = initialize(md.basalforcings,md);
 
Index: /issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.py
===================================================================
--- /issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.py	(revision 19526)
+++ /issm/trunk-jpl/src/m/boundaryconditions/SetIceShelfBC.py	(revision 19527)
@@ -76,6 +76,6 @@
 		print "      boundary conditions for stressbalance model: spc set as zero"
 
-	#Create zeros basalforcings and surfaceforcings
-	md.surfaceforcings.initialize(md)
+	#Create zeros basalforcings and smb
+	md.smb.initialize(md)
 	md.basalforcings.initialize(md)
 
Index: /issm/trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.m
===================================================================
--- /issm/trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.m	(revision 19526)
+++ /issm/trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.m	(revision 19527)
@@ -81,5 +81,5 @@
 
 %Initialize surface and basal forcings
-md.surfaceforcings = initialize(md.surfaceforcings,md);
+md.smb = initialize(md.smb,md);
 md.basalforcings   = initialize(md.basalforcings,md);
 
Index: /issm/trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.py
===================================================================
--- /issm/trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.py	(revision 19526)
+++ /issm/trunk-jpl/src/m/boundaryconditions/SetMarineIceSheetBC.py	(revision 19527)
@@ -84,6 +84,6 @@
 	md.hydrology.spcwatercolumn[pos,0]=1
 
-	#Create zeros basalforcings and surfaceforcings
-	md.surfaceforcings.initialize(md)
+	#Create zeros basalforcings and smb
+	md.smb.initialize(md)
 	md.basalforcings.initialize(md)
 
Index: /issm/trunk-jpl/src/m/classes/SMBcomponents.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBcomponents.m	(revision 19526)
+++ /issm/trunk-jpl/src/m/classes/SMBcomponents.m	(revision 19527)
@@ -9,4 +9,5 @@
 		runoff = NaN;
 		evaporation = NaN;
+		requested_outputs      = {};
 	end
 	methods
@@ -25,17 +26,22 @@
 
 		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+
+			list = {''};
+
+		end % }}}
 		function self = initialize(self,md) % {{{
 
 			if isnan(self.accumulation)
 				self.accumulation=zeros(md.mesh.numberofvertices,1);
-				disp('      no surfaceforcings.accumulation specified: values set as zero');
+				disp('      no smb.accumulation specified: values set as zero');
 			end
 			if isnan(self.evaporation)
 				self.evaporation=zeros(md.mesh.numberofvertices,1);
-				disp('      no surfaceforcings.evaporation specified: values set as zero');
+				disp('      no smb.evaporation specified: values set as zero');
 			end
 			if isnan(self.runoff)
 				self.runoff=zeros(md.mesh.numberofvertices,1);
-				disp('      no surfaceforcings.runoff specified: values set as zero');
+				disp('      no smb.runoff specified: values set as zero');
 			end
 
@@ -44,21 +50,22 @@
 
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.accumulation','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.accumulation','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices 1],'NaN',1);
 			end
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.runoff','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.runoff','timeseries',1,'NaN',1);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.runoff','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','smb.runoff','size',[md.mesh.numberofvertices 1],'NaN',1);
 			end
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.evaporation','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.evaporation','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices 1],'NaN',1);
 			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
 		end % }}}
 		function disp(self) % {{{
@@ -67,4 +74,5 @@
 			fielddisplay(self,'runoff','amount of ice melt lost from the ice column [m/yr ice eq]');
 			fielddisplay(self,'evaporation','amount of ice lost to evaporative processes [m/yr ice eq]');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
 		end % }}}
 		function marshall(self,md,fid) % {{{
@@ -72,8 +80,18 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBcomponentsEnum(),'format','Integer');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'enum',SmbEnum(),'data',SMBcomponentsEnum(),'format','Integer');
+			WriteData(fid,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum,'format','StringArray');
+
 		end % }}}
 	end
Index: /issm/trunk-jpl/src/m/classes/SMBcomponents.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBcomponents.py	(revision 19526)
+++ /issm/trunk-jpl/src/m/classes/SMBcomponents.py	(revision 19527)
@@ -17,4 +17,5 @@
 		self.runoff = float('NaN')
 		self.evaporation = float('NaN')
+		self.requested_outputs      = []
 		#}}}
 	def __repr__(self): # {{{
@@ -23,4 +24,5 @@
 		string="%s\n%s"%(string,fielddisplay(self,'runoff','amount of ice melt lost from the ice column [m/yr ice eq]'))
 		string="%s\n%s"%(string,fielddisplay(self,'evaporation','mount of ice lost to evaporative processes [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
 		return string
 		#}}}
@@ -31,4 +33,7 @@
 		self.mass_balance=project3d(md,'vector',self.evaporation,'type','node');
 		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
 	#}}}
 	def initialize(self,md): # {{{
@@ -51,20 +56,22 @@
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.accumulation','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1)
 
 		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.accumulation','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices],'NaN',1)
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.runoff','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.runoff','timeseries',1,'NaN',1)
 
 		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.runoff','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','smb.runoff','size',[md.mesh.numberofvertices],'NaN',1)
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.evaporation','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1)
 
 		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.evaporation','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices],'NaN',1)
+		
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
 
 		return md
@@ -74,7 +81,16 @@
 		yts=365.0*24.0*3600.0
 
-		WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBcomponentsEnum(),'format','Integer');
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'enum',SmbEnum(),'data',SMBcomponentsEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
 	# }}}
Index: /issm/trunk-jpl/src/m/classes/SMBd18opdd.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBd18opdd.m	(revision 19526)
+++ /issm/trunk-jpl/src/m/classes/SMBd18opdd.m	(revision 19527)
@@ -20,4 +20,5 @@
 		temperatures_presentday   = NaN;
 		precipitations_presentday = NaN;
+		requested_outputs      = {};
 	end
 	methods
@@ -35,4 +36,9 @@
 			self.s0p=project3d(md,'vector',self.s0p,'type','node');
 			self.s0t=project3d(md,'vector',self.s0t,'type','node');
+
+		end % }}}
+			function list = defaultoutputs(self,md) % {{{
+
+			list = {''};
 
 		end % }}}
@@ -62,16 +68,17 @@
 
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.desfac','<=',1,'numel',1);
-				md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'NaN',1,'size',[md.mesh.numberofvertices 1]);
-				md = checkfield(md,'fieldname','surfaceforcings.s0t','>=',0,'NaN',1,'size',[md.mesh.numberofvertices 1]);
-				md = checkfield(md,'fieldname','surfaceforcings.rlaps','>=',0,'numel',1);
-				md = checkfield(md,'fieldname','surfaceforcings.rlapslgm','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',1);
+				md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',1);
 				if(self.isd18opd==1) 
-					md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);
-					md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);
-					md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1,'size',[2,NaN],'singletimeseries',1);
-					md = checkfield(md,'fieldname','surfaceforcings.dpermil','>=',0,'numel',1);
+					md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.dpermil','>=',0,'numel',1);
 				end
 			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
 		end % }}}
 		function disp(self) % {{{
@@ -90,4 +97,5 @@
 				fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated');                            
 			end
+			fielddisplay(self,'requested_outputs','additional outputs requested');
 			% No need to display rlapslgm, Tdiff, ismungsm
 			% as they are not used in this case but are still needed as default values in
@@ -98,22 +106,32 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBd18opddEnum(),'format','Integer');
+			WriteData(fid,'enum',SmbEnum(),'data',SMBd18opddEnum(),'format','Integer');
 
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','ismungsm','format','Boolean');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','isd18opd','format','Boolean');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','desfac','format','Double');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0p','format','DoubleMat','mattype',1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0t','format','DoubleMat','mattype',1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlaps','format','Double');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlapslgm','format','Double');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2);
+			WriteData(fid,'object',self,'class','smb','fieldname','ismungsm','format','Boolean');
+			WriteData(fid,'object',self,'class','smb','fieldname','isd18opd','format','Boolean');
+			WriteData(fid,'object',self,'class','smb','fieldname','desfac','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',self,'class','smb','fieldname','rlaps','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','rlapslgm','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2);
+			WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2);
 
 			if self.isd18opd
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','dpermil','format','Double');
+				WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2);
+				WriteData(fid,'object',self,'class','smb','fieldname','dpermil','format','Double');
 			end
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum,'format','StringArray');
+
 		end % }}}
 	end
Index: /issm/trunk-jpl/src/m/classes/SMBd18opdd.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBd18opdd.py	(revision 19526)
+++ /issm/trunk-jpl/src/m/classes/SMBd18opdd.py	(revision 19527)
@@ -32,4 +32,5 @@
 		#set defaults
 		self.setdefaultparameters()
+		self.requested_outputs      = []
 		#}}}
 	def __repr__(self): # {{{
@@ -46,4 +47,5 @@
 			string="%s\n%s"%(string,fielddisplay(self,'delta18o','delta18o [per mil], required if pdd is activated and delta18o activated'))
 			string="%s\n%s"%(string,fielddisplay(self,'dpermil','degree per mil, required if d18opd is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
 
 		return string
@@ -57,4 +59,7 @@
 
 		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
 	#}}}
 	def initialize(self,md): # {{{
@@ -85,15 +90,17 @@
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.desfac','<=',1,'numel',[1])
-			md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])
-			md = checkfield(md,'fieldname','surfaceforcings.s0t','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])
-			md = checkfield(md,'fieldname','surfaceforcings.rlaps','>=',0,'numel',[1])
-			md = checkfield(md,'fieldname','surfaceforcings.rlapslgm','>=',0,'numel',[1])
+			md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',[1])
+			md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',[1])
+			md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',[1])
 
 			if self.isd18opd:
-				md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)
-				md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)
-				md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)
-				md = checkfield(md,'fieldname','surfaceforcings.dpermil','>=',0,'numel',[1])
+				md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.dpermil','>=',0,'numel',[1])
+		
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
 
 		return md
@@ -103,20 +110,29 @@
 		yts=365.0*24.0*3600.0
 
-		WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBd18opddEnum(),'format','Integer')
+		WriteData(fid,'enum',SmbEnum(),'data',SMBd18opddEnum(),'format','Integer')
 
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','ismungsm','format','Boolean')
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','isd18opd','format','Boolean')
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','desfac','format','Double')
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0p','format','DoubleMat','mattype',1);
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0t','format','DoubleMat','mattype',1);
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlaps','format','Double')
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlapslgm','format','Double')
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2)
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2)
+		WriteData(fid,'object',self,'class','smb','fieldname','ismungsm','format','Boolean')
+		WriteData(fid,'object',self,'class','smb','fieldname','isd18opd','format','Boolean')
+		WriteData(fid,'object',self,'class','smb','fieldname','desfac','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','smb','fieldname','rlaps','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','rlapslgm','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2)
+		WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2)
 
 		if self.isd18opd:
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','dpermil','format','Double')
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','dpermil','format','Double')
+			
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
 	# }}}
Index: /issm/trunk-jpl/src/m/classes/SMBforcing.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBforcing.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/classes/SMBforcing.m	(revision 19527)
@@ -0,0 +1,76 @@
+%SMBforcing Class definition
+%
+%   Usage:
+%      SMB=SMBforcing();
+
+classdef SMBforcing
+	properties (SetAccess=public) 
+		mass_balance = NaN;
+		requested_outputs      = {};
+	end
+	methods
+        function createxml(self,fid) % {{{
+            fprintf(fid, '\n\n');
+            fprintf(fid, '%s\n', '<!-- smb(SMBforcing) -->');
+			 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n','<parameter key ="mass_balance" type="',class(self.mass_balance),'" default="',self.mass_balance,'">','     <section name="smb(SMBforcing)" />','     <help> surface mass balance [m/yr ice eq] </help>','</parameter>');
+           
+        end % }}}
+		function self = SMBforcing(varargin) % {{{
+			switch nargin
+				case 0
+				otherwise
+					error('constructor not supported');
+			end
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+
+			list = {''};
+
+		end % }}}
+		function self = extrude(self,md) % {{{
+
+			self.mass_balance=project3d(md,'vector',self.mass_balance,'type','node');
+
+		end % }}}
+		function self = initialize(self,md) % {{{
+
+			if isnan(self.mass_balance)
+				self.mass_balance=zeros(md.mesh.numberofvertices,1);
+				disp('      no smb.mass_balance specified: values set as zero');
+			end
+
+		end % }}}
+		function md = checkconsistency(self,md,solution,analyses) % {{{
+
+			if ismember(MasstransportAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','smb.mass_balance','timeseries',1,'NaN',1);
+			end
+			if ismember(BalancethicknessAnalysisEnum(),analyses),
+				md = checkfield(md,'fieldname','smb.mass_balance','size',[md.mesh.numberofvertices 1],'NaN',1);
+			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+		end % }}}
+		function disp(self) % {{{
+			disp(sprintf('   surface forcings parameters:'));
+			fielddisplay(self,'mass_balance','surface mass balance [m/yr ice eq]');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
+		end % }}}
+		function marshall(self,md,fid) % {{{
+
+			yts=365.0*24.0*3600.0;
+
+			WriteData(fid,'enum',SmbEnum(),'data',SMBforcingEnum(),'format','Integer');
+			WriteData(fid,'object',self,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum,'format','StringArray');
+
+		end % }}}
+	end
+end
Index: /issm/trunk-jpl/src/m/classes/SMBforcing.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBforcing.py	(revision 19527)
+++ /issm/trunk-jpl/src/m/classes/SMBforcing.py	(revision 19527)
@@ -0,0 +1,68 @@
+import numpy
+from fielddisplay import fielddisplay
+from EnumDefinitions import *
+from checkfield import checkfield
+from WriteData import WriteData
+from project3d import project3d
+
+class SMBforcing(object):
+	"""
+	SMBforcing Class definition
+
+	   Usage:
+	      SMB=SMBforcing();
+	"""
+
+	def __init__(self): # {{{
+		self.mass_balance = float('NaN')
+		self.requested_outputs      = []
+		#}}}
+	def __repr__(self): # {{{
+		string="   surface forcings parameters:"
+		string="%s\n%s"%(string,fielddisplay(self,'mass_balance','surface mass balance [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
+		return string
+		#}}}
+	def extrude(self,md): # {{{
+
+		self.mass_balance=project3d(md,'vector',self.mass_balance,'type','node');
+		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
+	#}}}
+	def initialize(self,md): # {{{
+
+		if numpy.all(numpy.isnan(self.mass_balance)):
+			self.mass_balance=numpy.zeros((md.mesh.numberofvertices,1))
+			print "      no SMBforcing.mass_balance specified: values set as zero"
+
+		return self
+	#}}}
+	def checkconsistency(self,md,solution,analyses):    # {{{
+
+		if MasstransportAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.mass_balance','timeseries',1,'NaN',1)
+
+		if BalancethicknessAnalysisEnum() in analyses:
+			md = checkfield(md,'fieldname','smb.mass_balance','size',[md.mesh.numberofvertices],'NaN',1)
+
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
+		return md
+	# }}}
+	def marshall(self,md,fid):    # {{{
+
+		yts=365.0*24.0*3600.0
+
+		WriteData(fid,'enum',SmbEnum(),'data',SMBforcingEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','smb','fieldname','mass_balance','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
+	# }}}
Index: /issm/trunk-jpl/src/m/classes/SMBgemb.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBgemb.m	(revision 19526)
+++ /issm/trunk-jpl/src/m/classes/SMBgemb.m	(revision 19527)
@@ -14,9 +14,8 @@
 
 		%inputs: 
-		Ta    = NaN; %2 m air temperature, in Celsius
+		Ta    = NaN; %2 m air temperature, in Kelvin
 		V     = NaN; %wind speed (m/s-1)
 		dswrf = NaN; %downward shortwave radiation flux [W/m^2]
 		dlwrf = NaN; %downward longwave radiation flux [W/m^2]
-		RH    = NaN; %relative humidity [%]
 		P     = NaN; %precipitation [mm w.e. / m^2]
 		eAir  = NaN; %screen level vapor pressure [Pa]
@@ -62,4 +61,6 @@
 		t0dry = NaN; % warm snow timescale (30) 
 		K     = NaN; % time scale temperature coef. (7) 
+		
+		requested_outputs      = {};
 
 		%Several fields are missing from the standard GEMB model, which are capture intrinsically by ISSM. 
@@ -77,5 +78,5 @@
 					self=setdefaultparameters(self,mesh,geometry);
 				otherwise
-					error('constructor not supported');
+					error('constructor not supported: need geometry and mesh to set defaults');
 			end
 		end % }}}
@@ -86,9 +87,11 @@
 			self.dswrf=project3d(md,'vector',self.dswrf,'type','node');
 			self.dswrf=project3d(md,'vector',self.dswrf,'type','node');
-			self.RH=project3d(md,'vector',self.RH,'type','node');
 			self.P=project3d(md,'vector',self.P,'type','node');
 			self.eAir=project3d(md,'vector',self.eAir,'type','node');
 			self.pAir=project3d(md,'vector',self.pAir,'type','node');
 
+		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {'SmbMassBalance'};
 		end % }}}
 		function self = setdefaultparameters(self,mesh,geometry) % {{{
@@ -120,17 +123,17 @@
 function md = checkconsistency(self,md,solution,analyses) % {{{
 
-			md = checkfield(md,'fieldname','surfaceforcings.Ta','timeseries',1,'NaN',1);
-			md = checkfield(md,'fieldname','surfaceforcings.V','timeseries',1,'NaN',1);
-			md = checkfield(md,'fieldname','surfaceforcings.dswrf','timeseries',1,'NaN',1);
-			md = checkfield(md,'fieldname','surfaceforcings.dlwrf','timeseries',1,'NaN',1);
-			md = checkfield(md,'fieldname','surfaceforcings.RH','timeseries',1,'NaN',1);
-			md = checkfield(md,'fieldname','surfaceforcings.P','timeseries',1,'NaN',1);
-			md = checkfield(md,'fieldname','surfaceforcings.eAir','timeseries',1,'NaN',1);
-			
-			%check zTop is < local thickness:
-			he=sum(md.geometry.thickness(md.mesh.elements),2)/size(md.mesh.elements,2);
-			if any(he<self.zTop),
-				error('SMBgemb consistency check error: zTop should be smaller than local ice thickness');
-			end
+		md = checkfield(md,'fieldname','smb.Ta','timeseries',1,'NaN',1,'>',0,'<',273+60); %60 celsius max value
+		md = checkfield(md,'fieldname','smb.V','timeseries',1,'NaN',1);
+		md = checkfield(md,'fieldname','smb.dswrf','timeseries',1,'NaN',1);
+		md = checkfield(md,'fieldname','smb.dlwrf','timeseries',1,'NaN',1);
+		md = checkfield(md,'fieldname','smb.P','timeseries',1,'NaN',1);
+		md = checkfield(md,'fieldname','smb.eAir','timeseries',1,'NaN',1);
+
+		%check zTop is < local thickness:
+		he=sum(md.geometry.thickness(md.mesh.elements),2)/size(md.mesh.elements,2);
+		if any(he<self.zTop),
+			error('SMBgemb consistency check error: zTop should be smaller than local ice thickness');
+		end
+		md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
 
 		end % }}}
@@ -139,9 +142,8 @@
 			disp(sprintf('   surface forcings for SMB GEMB model :'));
 			
-			fielddisplay(self,'Ta','2 m air temperature, in Celsius');
+			fielddisplay(self,'Ta','2 m air temperature, in Kelvin');
 			fielddisplay(self,'V','wind speed (m/s-1)');
 			fielddisplay(self,'dlwrf','downward shortwave radiation flux [W/m^2]');
 			fielddisplay(self,'dswrf','downward longwave radiation flux [W/m^2]');
-			fielddisplay(self,'RH','relative humidity [%]');
 			fielddisplay(self,'P','precipitation [mm w.e. / m^2]');
 			fielddisplay(self,'eAir','screen level vapor pressure [Pa]');
@@ -184,4 +186,5 @@
 									'4 = DO NOT USE: emperical model of Li and Zwally (2004)',...
 									'5 = DO NOT USE: modified emperical model (4) by Helsen et al. (2008)'});
+			fielddisplay(self,'requested_outputs','additional outputs requested');
 									
 			
@@ -191,8 +194,18 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBgembEnum(),'format','Integer');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'enum',SmbEnum(),'data',SMBgembEnum(),'format','Integer');
+			WriteData(fid,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','runoff','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum,'format','StringArray');
+
 		end % }}}
 	end
Index: /issm/trunk-jpl/src/m/classes/SMBgradients.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBgradients.m	(revision 19526)
+++ /issm/trunk-jpl/src/m/classes/SMBgradients.m	(revision 19527)
@@ -10,4 +10,5 @@
 		b_pos  = NaN;
 		b_neg  = NaN;
+		requested_outputs      = {};
 	end
 	methods
@@ -25,4 +26,7 @@
 
 		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {''};
+		end % }}}
 		function self = initialize(self,md) % {{{
 
@@ -38,9 +42,10 @@
 
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.href','timeseries',1,'NaN',1);
-				md = checkfield(md,'fieldname','surfaceforcings.smbref','timeseries',1,'NaN',1);
-				md = checkfield(md,'fieldname','surfaceforcings.b_pos','timeseries',1,'NaN',1);
-				md = checkfield(md,'fieldname','surfaceforcings.b_neg','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.href','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.smbref','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.b_pos','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.b_neg','timeseries',1,'NaN',1);
 			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
 		end % }}}
 		function disp(self) % {{{
@@ -52,4 +57,5 @@
 			fielddisplay(self,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated');
 			fielddisplay(self,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
 
 		end % }}}
@@ -58,9 +64,18 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBgradientsEnum(),'format','Integer');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'enum',SmbEnum(),'data',SMBgradientsEnum(),'format','Integer');
+			WriteData(fid,'object',self,'class','smb','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum,'format','StringArray');
 
 		end % }}}
Index: /issm/trunk-jpl/src/m/classes/SMBgradients.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBgradients.py	(revision 19526)
+++ /issm/trunk-jpl/src/m/classes/SMBgradients.py	(revision 19527)
@@ -18,4 +18,5 @@
 		self.b_pos   = float('NaN')
 		self.b_neg   = float('NaN')
+		self.requested_outputs      = []
 		#}}}
 	def __repr__(self): # {{{
@@ -27,4 +28,5 @@
 		string="%s\n%s"%(string,fielddisplay(self,'b_pos',' slope of hs - smb regression line for accumulation regime required if smb gradients is activated'))
 		string="%s\n%s"%(string,fielddisplay(self,'b_neg',' slope of hs - smb regression line for ablation regime required if smb gradients is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
 
 		return string
@@ -34,4 +36,7 @@
 		#Nothing for now
 		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
 	#}}}
 	def initialize(self,md): # {{{
@@ -44,9 +49,10 @@
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.href','timeseries',1,'NaN',1)
-			md = checkfield(md,'fieldname','surfaceforcings.smbref','timeseries',1,'NaN',1)
-			md = checkfield(md,'fieldname','surfaceforcings.b_pos','timeseries',1,'NaN',1)
-			md = checkfield(md,'fieldname','surfaceforcings.b_neg','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.href','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.smbref','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.b_pos','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.b_neg','timeseries',1,'NaN',1)
 
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
 		return md
 	# }}}
@@ -55,8 +61,17 @@
 		yts=365.0*24.0*3600.0
 
-		WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBgradientsEnum(),'format','Integer');
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'enum',SmbEnum(),'data',SMBgradientsEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','smb','fieldname','href','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','b_pos','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','b_neg','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
 	# }}}
Index: /issm/trunk-jpl/src/m/classes/SMBhenning.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBhenning.m	(revision 19526)
+++ /issm/trunk-jpl/src/m/classes/SMBhenning.m	(revision 19527)
@@ -7,4 +7,5 @@
 	properties (SetAccess=public) 
 		smbref = NaN;
+		requested_outputs      = {};
 	end
 	methods
@@ -21,9 +22,12 @@
 
 		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {''};
+		end % }}}
 		function self = initialize(self,md) % {{{
 
 			if isnan(self.smbref)
 				self.smbref=zeros(md.mesh.numberofvertices,1);
-				disp('      no surfaceforcings.smbref specified: values set as zero');
+				disp('      no smb.smbref specified: values set as zero');
 			end
 
@@ -32,13 +36,15 @@
 
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.smbref','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.smbref','timeseries',1,'NaN',1);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.smbref','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','smb.smbref','size',[md.mesh.numberofvertices 1],'NaN',1);
 			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
 		end % }}}
 		function disp(self) % {{{
 			disp(sprintf('   surface forcings parameters:'));
 			fielddisplay(self,'smbref','reference smb from which deviation is calculated [m/yr ice eq]');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
 		end % }}}
 		function marshall(self,md,fid) % {{{
@@ -46,6 +52,16 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBhenningEnum(),'format','Integer');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'enum',SmbEnum(),'data',SMBhenningEnum(),'format','Integer');
+			WriteData(fid,'object',self,'class','smb','fieldname','smbref','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum,'format','StringArray');
+
 		end % }}}
 	end
Index: /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.m	(revision 19526)
+++ /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.m	(revision 19527)
@@ -10,4 +10,5 @@
 		melt = NaN;
 		refreeze = NaN;
+		requested_outputs      = {};
 	end
 	methods
@@ -27,21 +28,24 @@
 
 		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {''};
+		end % }}}
 		function self = initialize(self,md) % {{{
 
 			if isnan(self.accumulation)
 				self.accumulation=zeros(md.mesh.numberofvertices,1);
-				disp('      no surfaceforcings.accumulation specified: values set as zero');
+				disp('      no smb.accumulation specified: values set as zero');
 			end
 			if isnan(self.evaporation)
 				self.evaporation=zeros(md.mesh.numberofvertices,1);
-				disp('      no surfaceforcings.evaporation specified: values set as zero');
+				disp('      no smb.evaporation specified: values set as zero');
 			end
 			if isnan(self.refreeze)
 				self.refreeze=zeros(md.mesh.numberofvertices,1);
-				disp('      no surfaceforcings.refreeze specified: values set as zero');
+				disp('      no smb.refreeze specified: values set as zero');
 			end
 			if isnan(self.melt)
 				self.melt=zeros(md.mesh.numberofvertices,1);
-				disp('      no surfaceforcings.melt specified: values set as zero');
+				disp('      no smb.melt specified: values set as zero');
 			end
 
@@ -50,27 +54,28 @@
 
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.accumulation','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.accumulation','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices 1],'NaN',1);
 			end
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.evaporation','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.evaporation','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices 1],'NaN',1);
 			end
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.refreeze','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.refreeze','timeseries',1,'NaN',1);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.refreeze','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','smb.refreeze','size',[md.mesh.numberofvertices 1],'NaN',1);
 			end
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.melt','timeseries',1,'NaN',1);
+				md = checkfield(md,'fieldname','smb.melt','timeseries',1,'NaN',1);
 			end
 			if ismember(BalancethicknessAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.melt','size',[md.mesh.numberofvertices 1],'NaN',1);
+				md = checkfield(md,'fieldname','smb.melt','size',[md.mesh.numberofvertices 1],'NaN',1);
 			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
 		end % }}}
 		function disp(self) % {{{
@@ -80,4 +85,5 @@
 			fielddisplay(self,'melt','amount of ice melt in ice column [m/yr ice eq]');
 			fielddisplay(self,'refreeze','amount of ice melt refrozen in ice column [m/yr ice eq]');
+			fielddisplay(self,'requested_outputs','additional outputs requested');
 		end % }}}
 		function marshall(self,md,fid) % {{{
@@ -85,9 +91,19 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBmeltcomponentsEnum(),'format','Integer');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'enum',SmbEnum(),'data',SMBmeltcomponentsEnum(),'format','Integer');
+			WriteData(fid,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			WriteData(fid,'object',self,'class','smb','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum,'format','StringArray');
+
 		end % }}}
 	end
Index: /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py	(revision 19526)
+++ /issm/trunk-jpl/src/m/classes/SMBmeltcomponents.py	(revision 19527)
@@ -17,4 +17,5 @@
 		self.runoff = float('NaN')
 		self.evaporation = float('NaN')
+		self.requested_outputs      = []
 		#}}}
 	def __repr__(self): # {{{
@@ -24,4 +25,5 @@
 		string="%s\n%s"%(string,fielddisplay(self,'melt','amount of ice melt in the ice column [m/yr ice eq]'))
 		string="%s\n%s"%(string,fielddisplay(self,'refreeze','amount of ice melt refrozen in the ice column [m/yr ice eq]'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
 		return string
 		#}}}
@@ -33,4 +35,7 @@
 		self.mass_balance=project3d(md,'vector',self.refreeze,'type','node');
 		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
 	#}}}
 	def initialize(self,md): # {{{
@@ -57,27 +62,28 @@
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.accumulation','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.accumulation','timeseries',1,'NaN',1)
 
 		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.accumulation','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','smb.accumulation','size',[md.mesh.numberofvertices],'NaN',1)
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.melt','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.melt','timeseries',1,'NaN',1)
 
 		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.melt','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','smb.melt','size',[md.mesh.numberofvertices],'NaN',1)
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.refreeze','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.refreeze','timeseries',1,'NaN',1)
 
 		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.refreeze','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','smb.refreeze','size',[md.mesh.numberofvertices],'NaN',1)
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.evaporation','timeseries',1,'NaN',1)
+			md = checkfield(md,'fieldname','smb.evaporation','timeseries',1,'NaN',1)
 
 		if BalancethicknessAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.evaporation','size',[md.mesh.numberofvertices],'NaN',1)
+			md = checkfield(md,'fieldname','smb.evaporation','size',[md.mesh.numberofvertices],'NaN',1)
 
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
 		return md
 	# }}}
@@ -86,8 +92,17 @@
 		yts=365.0*24.0*3600.0
 
-		WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBmeltcomponentsEnum(),'format','Integer');
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'enum',SmbEnum(),'data',SMBmeltcomponentsEnum(),'format','Integer');
+		WriteData(fid,'object',self,'class','smb','fieldname','accumulation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','evaporation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','melt','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		WriteData(fid,'object',self,'class','smb','fieldname','refreeze','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+		
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
 	# }}}
Index: /issm/trunk-jpl/src/m/classes/SMBpdd.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBpdd.m	(revision 19526)
+++ /issm/trunk-jpl/src/m/classes/SMBpdd.m	(revision 19527)
@@ -24,4 +24,5 @@
 		precipitations_presentday = NaN;
 		precipitations_lgm        = NaN;
+		requested_outputs      = {};
 	end
 	methods
@@ -49,4 +50,7 @@
 
 		end % }}}
+		function list = defaultoutputs(self,md) % {{{
+			list = {''};
+		end % }}}
 		function self = initialize(self,md) % {{{
                     
@@ -73,31 +77,33 @@
 
 			if ismember(MasstransportAnalysisEnum(),analyses),
-				md = checkfield(md,'fieldname','surfaceforcings.desfac','<=',1,'numel',1);
-				md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'NaN',1,'size',[md.mesh.numberofvertices 1]);
-				md = checkfield(md,'fieldname','surfaceforcings.s0t','>=',0,'NaN',1,'size',[md.mesh.numberofvertices 1]);
-				md = checkfield(md,'fieldname','surfaceforcings.rlaps','>=',0,'numel',1);
-				md = checkfield(md,'fieldname','surfaceforcings.rlapslgm','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',1);
+				md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'size',[md.mesh.numberofvertices 1]);
+				md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',1);
+				md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',1);
 				if(self.isdelta18o==0 & self.ismungsm==0)
-					md = checkfield(md,'fieldname','surfaceforcings.monthlytemperatures','timeseries',1,'NaN',1);
-					md = checkfield(md,'fieldname','surfaceforcings.precipitation','timeseries',1,'NaN',1);
+					md = checkfield(md,'fieldname','smb.monthlytemperatures','timeseries',1,'NaN',1);
+					md = checkfield(md,'fieldname','smb.precipitation','timeseries',1,'NaN',1);
 				elseif(self.isdelta18o==1) 
-					md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1,'size',[2,NaN],'singletimeseries',1);
-					md = checkfield(md,'fieldname','surfaceforcings.delta18o_surface','NaN',1,'size',[2,NaN],'singletimeseries',1);
-					md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);
-					md = checkfield(md,'fieldname','surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);
-					md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);
-					md = checkfield(md,'fieldname','surfaceforcings.precipitations_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);                                       
-					md = checkfield(md,'fieldname','surfaceforcings.Tdiff','NaN',1,'size',[2,NaN],'singletimeseries',1);
-					md = checkfield(md,'fieldname','surfaceforcings.sealev','NaN',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.delta18o_surface','NaN',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);                                       
+					md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.sealev','NaN',1,'size',[2,NaN],'singletimeseries',1);
 				elseif(self.ismungsm==1) 
-					md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);
-					md = checkfield(md,'fieldname','surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);
-					md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);
-					md = checkfield(md,'fieldname','surfaceforcings.precipitations_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);                                       
-					md = checkfield(md,'fieldname','surfaceforcings.Pfac','NaN',1,'size',[2,NaN],'singletimeseries',1);
-					md = checkfield(md,'fieldname','surfaceforcings.Tdiff','NaN',1,'size',[2,NaN],'singletimeseries',1);
-					md = checkfield(md,'fieldname','surfaceforcings.sealev','NaN',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);
+					md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1 12],'NaN',1,'timeseries',1);                                       
+					md = checkfield(md,'fieldname','smb.Pfac','NaN',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'size',[2,NaN],'singletimeseries',1);
+					md = checkfield(md,'fieldname','smb.sealev','NaN',1,'size',[2,NaN],'singletimeseries',1);
 				end
 			end
+			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
+			
 		end % }}}
 		function disp(self) % {{{
@@ -133,4 +139,5 @@
 				fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated');
 			end
+			fielddisplay(self,'requested_outputs','additional outputs requested');
 		end % }}}
 		function marshall(self,md,fid) % {{{
@@ -138,36 +145,46 @@
 			yts=365.0*24.0*3600.0;
 
-			WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBpddEnum(),'format','Integer');
+			WriteData(fid,'enum',SmbEnum(),'data',SMBpddEnum(),'format','Integer');
 
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','isdelta18o','format','Boolean');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','ismungsm','format','Boolean');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','desfac','format','Double');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0p','format','DoubleMat','mattype',1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0t','format','DoubleMat','mattype',1);
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlaps','format','Double');
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlapslgm','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','isdelta18o','format','Boolean');
+			WriteData(fid,'object',self,'class','smb','fieldname','ismungsm','format','Boolean');
+			WriteData(fid,'object',self,'class','smb','fieldname','desfac','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+			WriteData(fid,'object',self,'class','smb','fieldname','rlaps','format','Double');
+			WriteData(fid,'object',self,'class','smb','fieldname','rlapslgm','format','Double');
 
 			if(self.isdelta18o==0 & self.ismungsm==0)
-				%WriteData(fid,'object',self,'class','surfaceforcings','fieldname','monthlytemperatures','format','DoubleMat','mattype',1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+				%WriteData(fid,'object',self,'class','smb','fieldname','monthlytemperatures','format','DoubleMat','mattype',1);
+				WriteData(fid,'object',self,'class','smb','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
 			elseif self.isdelta18o
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','delta18o_surface','format','DoubleMat','mattype',1,'timeserieslength',2);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2);
+				WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','delta18o_surface','format','DoubleMat','mattype',1,'timeserieslength',2);
+				WriteData(fid,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2);
+				WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2);
+				WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2);
 			elseif self.ismungsm
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','Pfac','format','DoubleMat','mattype',1,'timeserieslength',2);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2);
-				WriteData(fid,'object',self,'class','surfaceforcings','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2);
+				WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1);
+				WriteData(fid,'object',self,'class','smb','fieldname','Pfac','format','DoubleMat','mattype',1,'timeserieslength',2);
+				WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2);
+				WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2);
 			end
+			
+			%process requested outputs
+			outputs = self.requested_outputs;
+			pos  = find(ismember(outputs,'default'));
+			if ~isempty(pos),
+				outputs(pos) = [];                         %remove 'default' from outputs
+				outputs      = [outputs defaultoutputs(self,md)]; %add defaults
+			end
+			WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum,'format','StringArray');
+
 		end % }}}
 	end
Index: /issm/trunk-jpl/src/m/classes/SMBpdd.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBpdd.py	(revision 19526)
+++ /issm/trunk-jpl/src/m/classes/SMBpdd.py	(revision 19527)
@@ -36,4 +36,5 @@
 		#set defaults
 		self.setdefaultparameters()
+		self.requested_outputs      = []
 		#}}}
 	def __repr__(self): # {{{
@@ -67,4 +68,5 @@
 				string="%s\n%s"%(string,fielddisplay(self,'Tdiff','time interpolation parameter for temperature, 1D(year), required if mungsm is activated'))
 				string="%s\n%s"%(string,fielddisplay(self,'sealev','sea level [m], 1D(year), required if mungsm is activated'))
+		string="%s\n%s"%(string,fielddisplay(self,'requested_outputs','additional outputs requested'))
 				
 		return string
@@ -87,4 +89,7 @@
 
 		return self
+	#}}}
+	def defaultoutputs(self,md): # {{{
+		return []
 	#}}}
 	def initialize(self,md): # {{{
@@ -114,31 +119,32 @@
 
 		if MasstransportAnalysisEnum() in analyses:
-			md = checkfield(md,'fieldname','surfaceforcings.desfac','<=',1,'numel',[1])
-			md = checkfield(md,'fieldname','surfaceforcings.s0p','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])
-			md = checkfield(md,'fieldname','surfaceforcings.s0t','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])
-			md = checkfield(md,'fieldname','surfaceforcings.rlaps','>=',0,'numel',[1])
-			md = checkfield(md,'fieldname','surfaceforcings.rlapslgm','>=',0,'numel',[1])
+			md = checkfield(md,'fieldname','smb.desfac','<=',1,'numel',[1])
+			md = checkfield(md,'fieldname','smb.s0p','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.s0t','>=',0,'NaN',1,'size',[md.mesh.numberofvertices,1])
+			md = checkfield(md,'fieldname','smb.rlaps','>=',0,'numel',[1])
+			md = checkfield(md,'fieldname','smb.rlapslgm','>=',0,'numel',[1])
 
 			if (self.isdelta18o==0 and self.ismungsm==0):
-				md = checkfield(md,'fieldname','surfaceforcings.monthlytemperatures','NaN',1,'timeseries',1)
-				md = checkfield(md,'fieldname','surfaceforcings.precipitation','NaN',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.monthlytemperatures','NaN',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitation','NaN',1,'timeseries',1)
 			elif self.isdelta18o:
-				md = checkfield(md,'fieldname','surfaceforcings.delta18o','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)
-				md = checkfield(md,'fieldname','surfaceforcings.delta18o_surface','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)
-				md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)
-				md = checkfield(md,'fieldname','surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)
-				md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)
-				md = checkfield(md,'fieldname','surfaceforcings.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)                                       
-				md = checkfield(md,'fieldname','surfaceforcings.Tdiff','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)
-				md = checkfield(md,'fieldname','surfaceforcings.sealev','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.delta18o','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.delta18o_surface','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)                                       
+				md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.sealev','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)
 			elif self.ismungsm:
-				md = checkfield(md,'fieldname','surfaceforcings.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)
-				md = checkfield(md,'fieldname','surfaceforcings.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)
-				md = checkfield(md,'fieldname','surfaceforcings.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)
-				md = checkfield(md,'fieldname','surfaceforcings.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)                                       
-				md = checkfield(md,'fieldname','surfaceforcings.Pfac','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)
-				md = checkfield(md,'fieldname','surfaceforcings.Tdiff','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)
-				md = checkfield(md,'fieldname','surfaceforcings.sealev','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.temperatures_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.temperatures_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_presentday','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)
+				md = checkfield(md,'fieldname','smb.precipitations_lgm','size',[md.mesh.numberofvertices+1,12],'NaN',1,'timeseries',1)                                       
+				md = checkfield(md,'fieldname','smb.Pfac','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.Tdiff','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)
+				md = checkfield(md,'fieldname','smb.sealev','NaN',1,'size',[2,numpy.nan],'singletimeseries',1)
 
+		md = checkfield(md,'fieldname','masstransport.requested_outputs','stringrow',1)
 		return md
 	#}}}
@@ -147,33 +153,42 @@
 		yts=365.0*24.0*3600.0
 
-		WriteData(fid,'enum',SurfaceforcingsEnum(),'data',SMBpddEnum(),'format','Integer')
+		WriteData(fid,'enum',SmbEnum(),'data',SMBpddEnum(),'format','Integer')
 
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','isdelta18o','format','Boolean')
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','ismungsm','format','Boolean')
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','desfac','format','Double')
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0p','format','DoubleMat','mattype',1);
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','s0t','format','DoubleMat','mattype',1);
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlaps','format','Double')
-		WriteData(fid,'object',self,'class','surfaceforcings','fieldname','rlapslgm','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','isdelta18o','format','Boolean')
+		WriteData(fid,'object',self,'class','smb','fieldname','ismungsm','format','Boolean')
+		WriteData(fid,'object',self,'class','smb','fieldname','desfac','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','s0p','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','smb','fieldname','s0t','format','DoubleMat','mattype',1);
+		WriteData(fid,'object',self,'class','smb','fieldname','rlaps','format','Double')
+		WriteData(fid,'object',self,'class','smb','fieldname','rlapslgm','format','Double')
 
 		if (self.isdelta18o==0 and self.ismungsm==0):
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','monthlytemperatures','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitation','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
 		elif self.isdelta18o:
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','delta18o_surface','format','DoubleMat','mattype',1,'timeserieslength',2)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2)			
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','delta18o_surface','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','delta18o','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2)			
 		elif self.ismungsm:
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','Pfac','format','DoubleMat','mattype',1,'timeserieslength',2)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2)
-			WriteData(fid,'object',self,'class','surfaceforcings','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_presentday','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','temperatures_lgm','format','DoubleMat','mattype',1,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_presentday','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','precipitations_lgm','format','DoubleMat','mattype',1,'scale',1./yts,'timeserieslength',md.mesh.numberofvertices+1)
+			WriteData(fid,'object',self,'class','smb','fieldname','Pfac','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','Tdiff','format','DoubleMat','mattype',1,'timeserieslength',2)
+			WriteData(fid,'object',self,'class','smb','fieldname','sealev','format','DoubleMat','mattype',1,'timeserieslength',2)
+			
+		#process requested outputs
+		outputs = self.requested_outputs
+		indices = [i for i, x in enumerate(outputs) if x == 'default']
+		if len(indices) > 0:
+			outputscopy=outputs[0:max(0,indices[0]-1)]+self.defaultoutputs(md)+outputs[indices[0]+1:]
+			outputs    =outputscopy
+		WriteData(fid,'data',outputs,'enum',SmbRequestedOutputsEnum(),'format','StringArray')
+
 	# }}}
Index: /issm/trunk-jpl/src/m/classes/model.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/model.m	(revision 19526)
+++ /issm/trunk-jpl/src/m/classes/model.m	(revision 19527)
@@ -13,5 +13,5 @@
 		geometry         = 0;
 		constants        = 0;
-		surfaceforcings  = 0;
+		smb              = 0;
 		basalforcings    = 0;
 		materials        = 0;
@@ -106,9 +106,9 @@
 			end
 			%2014 January 9th
-			if isa(md.surfaceforcings,'surfaceforcings'),
-				disp('Recovering old surfaceforcings class');
-				mass_balance=md.surfaceforcings.mass_balance;
-				md.surfaceforcings=SMB();
-				md.surfaceforcings.mass_balance=mass_balance;
+			if isa(md.smb,'smb'),
+				disp('Recovering old smb class');
+				mass_balance=md.smb.mass_balance;
+				md.smb=SMBforcing();
+				md.smb.mass_balance=mass_balance;
 			end
 			%2014 March 26th
@@ -198,8 +198,8 @@
 			if numel(md.inversion.min_parameters)>1, md.inversion.min_parameters=project2d(md,md.inversion.min_parameters,md.mesh.numberoflayers); end;
 			if numel(md.inversion.max_parameters)>1, md.inversion.max_parameters=project2d(md,md.inversion.max_parameters,md.mesh.numberoflayers); end;
-			if isa(md.surfaceforcings,'SMB') & ~isnan(md.surfaceforcings.mass_balance),
-				md.surfaceforcings.mass_balance=project2d(md,md.surfaceforcings.mass_balance,md.mesh.numberoflayers); 
-			elseif isa(md.surfaceforcings,'SMBhenning') & ~isnan(md.surfaceforcings.smbref),
-				md.surfaceforcings.smbref=project2d(md,md.surfaceforcings.smbref,md.mesh.numberoflayers);
+			if isa(md.smb,'SMBforcing') & ~isnan(md.smb.mass_balance),
+				md.smb.mass_balance=project2d(md,md.smb.mass_balance,md.mesh.numberoflayers); 
+			elseif isa(md.smb,'SMBhenning') & ~isnan(md.smb.smbref),
+				md.smb.smbref=project2d(md,md.smb.smbref,md.mesh.numberoflayers);
 			end;
 			if ~isnan(md.balancethickness.thickening_rate), md.balancethickness.thickening_rate=project2d(md,md.balancethickness.thickening_rate,md.mesh.numberoflayers); end;
@@ -742,5 +742,5 @@
 			md.friction  = extrude(md.friction,md);
 			md.inversion = extrude(md.inversion,md);
-			md.surfaceforcings = extrude(md.surfaceforcings,md);
+			md.smb = extrude(md.smb,md);
 			md.initialization = extrude(md.initialization,md);
 
@@ -792,5 +792,5 @@
 			if isfield(structmd,'melting_rate'), md.basalforcings.floatingice_melting_rate=structmd.melting_rate; end
 			if isfield(structmd,'melting_rate'), md.basalforcings.groundedice_melting_rate=structmd.melting_rate; end
-			if isfield(structmd,'accumulation'), md.surfaceforcings.mass_balance=structmd.accumulation; end
+			if isfield(structmd,'accumulation'), md.smb.mass_balance=structmd.accumulation; end
 			if isfield(structmd,'numberofgrids'), md.mesh.numberofvertices=structmd.numberofgrids; end
 			if isfield(structmd,'numberofgrids2d'), md.mesh.numberofvertices2d=structmd.numberofgrids2d; end
@@ -804,5 +804,5 @@
 			if isfield(structmd,'g'), md.constants.g=structmd.g; end
 			if isfield(structmd,'yts'), md.constants.yts=structmd.yts; end
-			if isfield(structmd,'surface_mass_balance'), md.surfaceforcings.mass_balance=structmd.surface_mass_balance; end
+			if isfield(structmd,'surface_mass_balance'), md.smb.mass_balance=structmd.surface_mass_balance; end
 			if isfield(structmd,'basal_melting_rate'), md.basalforcings.floatingice_melting_rate=structmd.basal_melting_rate; end
 			if isfield(structmd,'geothermalflux'), md.basalforcings.geothermalflux=structmd.geothermalflux; end
@@ -1049,5 +1049,5 @@
 			md.geometry         = geometry();
 			md.initialization   = initialization();
-			md.surfaceforcings  = SMB();
+			md.smb              = SMBforcing();
 			md.basalforcings    = basalforcings();
 			md.friction         = friction();
@@ -1218,5 +1218,5 @@
 			disp(sprintf('%19s: %-22s -- %s','geometry'        ,['[1x1 ' class(self.geometry) ']'],'surface elevation, bedrock topography, ice thickness,...'));
 			disp(sprintf('%19s: %-22s -- %s','constants'       ,['[1x1 ' class(self.constants) ']'],'physical constants'));
-			disp(sprintf('%19s: %-22s -- %s','surfaceforcings' ,['[1x1 ' class(self.surfaceforcings) ']'],'surface forcings'));
+			disp(sprintf('%19s: %-22s -- %s','smb'             ,['[1x1 ' class(self.smb) ']'],'surface mass balance'));
 			disp(sprintf('%19s: %-22s -- %s','basalforcings'   ,['[1x1 ' class(self.basalforcings) ']'],'bed forcings'));
 			disp(sprintf('%19s: %-22s -- %s','materials'       ,['[1x1 ' class(self.materials) ']'],'material properties'));
Index: /issm/trunk-jpl/src/m/classes/model.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/model.py	(revision 19526)
+++ /issm/trunk-jpl/src/m/classes/model.py	(revision 19527)
@@ -8,5 +8,5 @@
 from geometry import geometry
 from constants import constants
-from SMB import SMB
+from SMBforcing import SMBforcing
 from SMBpdd import SMBpdd
 from SMBd18opdd import SMBd18opdd
@@ -76,5 +76,5 @@
 		self.geometry         = geometry()
 		self.constants        = constants()
-		self.surfaceforcings  = SMB()
+		self.smb              = SMBforcing()
 		self.basalforcings    = basalforcings()
 		self.materials        = matice()
@@ -120,5 +120,5 @@
 		        'geometry',\
 		        'constants',\
-		        'surfaceforcings',\
+		        'smb',\
 		        'basalforcings',\
 		        'materials',\
@@ -160,5 +160,5 @@
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("geometry","[%s,%s]" % ("1x1",obj.geometry.__class__.__name__),"surface elevation, bedrock topography, ice thickness,..."))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("constants","[%s,%s]" % ("1x1",obj.constants.__class__.__name__),"physical constants"))
-		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("surfaceforcings","[%s,%s]" % ("1x1",obj.surfaceforcings.__class__.__name__),"surface forcings"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("smb","[%s,%s]" % ("1x1",obj.smb.__class__.__name__),"surface mass balance"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("basalforcings","[%s,%s]" % ("1x1",obj.basalforcings.__class__.__name__),"bed forcings"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("materials","[%s,%s]" % ("1x1",obj.materials.__class__.__name__),"material properties"))
@@ -609,5 +609,5 @@
 		md.friction.extrude(md)
 		md.inversion.extrude(md)
-		md.surfaceforcings.extrude(md)
+		md.smb.extrude(md)
 		md.initialization.extrude(md)
 		md.flowequation.extrude(md)
@@ -674,6 +674,6 @@
                 if isinstance(md.inversion.max_parameters,numpy.ndarray):
 		    if md.inversion.max_parameters.size>1: md.inversion.max_parameters=project2d(md,md.inversion.max_parameters,md.mesh.numberoflayers) 
-		if not numpy.isnan(md.surfaceforcings.mass_balance).all():
-			md.surfaceforcings.mass_balance=project2d(md,md.surfaceforcings.mass_balance,md.mesh.numberoflayers) 
+		if not numpy.isnan(md.smb.mass_balance).all():
+			md.smb.mass_balance=project2d(md,md.smb.mass_balance,md.mesh.numberoflayers) 
 		
 		if not numpy.isnan(md.balancethickness.thickening_rate).all(): md.balancethickness.thickening_rate=project2d(md,md.balancethickness.thickening_rate,md.mesh.numberoflayers) 
Index: /issm/trunk-jpl/src/m/classes/oldclasses/surfaceforcings.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/oldclasses/surfaceforcings.m	(revision 19526)
+++ /issm/trunk-jpl/src/m/classes/oldclasses/surfaceforcings.m	(revision 19527)
@@ -2,7 +2,7 @@
 %
 %   Usage:
-%      surfaceforcings=surfaceforcings();
+%      smb=smb();
 
-classdef surfaceforcings
+classdef smb
 	properties (SetAccess=public) 
 		precipitation             = NaN;
Index: /issm/trunk-jpl/src/m/classes/transient.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/transient.m	(revision 19526)
+++ /issm/trunk-jpl/src/m/classes/transient.m	(revision 19527)
@@ -6,4 +6,5 @@
 classdef transient
 	properties (SetAccess=public) 
+		issmb             = 0;
 		ismasstransport   = 0;
 		isstressbalance   = 0;
@@ -23,4 +24,5 @@
             % transient solution parameters
             fprintf(fid,'%s\n%s\n%s\n','<frame key="1" label="transient solution parameters">','<section name="transient" />');                    
+                fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="issmb" type="',class(self.issmb),'" default="',convert2str(self.issmb),'">','     <section name="transient" />','     <help> indicates whether a masstransport solution is used in the transient </help>','  </parameter>');
                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="ismasstransport" type="',class(self.ismasstransport),'" default="',convert2str(self.ismasstransport),'">','     <section name="transient" />','     <help> indicates whether a masstransport solution is used in the transient </help>','  </parameter>');
                 fprintf(fid,'%s%s%s%s%s\n%s\n%s\n%s\n','  <parameter key ="isstressbalance" type="',class(self.isstressbalance),'" default="',convert2str(self.isstressbalance),'">','     <section name="transient" />','     <help> indicates whether a stressbalance solution is used in the transient </help>','  </parameter>');
@@ -46,4 +48,5 @@
 
 			%full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
+			self.issmb           = 0;
 			self.ismasstransport = 0;
 			self.isstressbalance = 0;
@@ -62,4 +65,5 @@
 
 			%full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
+			self.issmb           = 1;
 			self.ismasstransport = 1;
 			self.isstressbalance = 1;
@@ -76,6 +80,6 @@
 		end % }}}
 		function list = defaultoutputs(self,md) % {{{
-			if(self.ismasstransport)
-				list = {'SurfaceforcingsMassBalance'};
+			if(self.issmb)
+				list = {'SmbMassBalance'};
 			else
 				list = {};
@@ -87,4 +91,5 @@
 			if solution~=TransientSolutionEnum(), return; end
 
+			md = checkfield(md,'fieldname','transient.issmb','numel',[1],'values',[0 1]);
 			md = checkfield(md,'fieldname','transient.ismasstransport','numel',[1],'values',[0 1]);
 			md = checkfield(md,'fieldname','transient.isstressbalance','numel',[1],'values',[0 1]);
@@ -102,4 +107,5 @@
 			disp(sprintf('   transient solution parameters:'));
 
+			fielddisplay(self,'issmb','indicates whether a surface mass balance solution is used in the transient');
 			fielddisplay(self,'ismasstransport','indicates whether a masstransport solution is used in the transient');
 			fielddisplay(self,'isstressbalance','indicates whether a stressbalance solution is used in the transient');
@@ -115,4 +121,5 @@
 		end % }}}
 		function marshall(self,md,fid) % {{{
+			WriteData(fid,'object',self,'fieldname','issmb','format','Boolean');
 			WriteData(fid,'object',self,'fieldname','ismasstransport','format','Boolean');
 			WriteData(fid,'object',self,'fieldname','isstressbalance','format','Boolean');
Index: /issm/trunk-jpl/src/m/classes/transient.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/transient.py	(revision 19526)
+++ /issm/trunk-jpl/src/m/classes/transient.py	(revision 19527)
@@ -13,4 +13,5 @@
 
 	def __init__(self): # {{{
+		self.issmb   = False
 		self.ismasstransport   = False
 		self.isstressbalance   = False
@@ -30,4 +31,5 @@
 	def __repr__(self): # {{{
 		string='   transient solution parameters:'
+		string="%s\n%s"%(string,fielddisplay(self,'issmb','indicates if a surface mass balance solution is used in the transient'))
 		string="%s\n%s"%(string,fielddisplay(self,'ismasstransport','indicates if a masstransport solution is used in the transient'))
 		string="%s\n%s"%(string,fielddisplay(self,'isstressbalance','indicates if a stressbalance solution is used in the transient'))
@@ -44,6 +46,6 @@
 	def defaultoutputs(self,md): # {{{
 
-		if self.ismasstransport:
-			return ['SurfaceforcingsMassBalance']
+		if self.issmb:
+			return ['SmbMassBalance']
 		else:
 			return []
@@ -53,4 +55,5 @@
 		
 		#Nothing done
+		self.issmb   = False
 		self.ismasstransport   = False
 		self.isstressbalance   = False
@@ -70,4 +73,5 @@
 		
 		#full analysis: Stressbalance, Masstransport and Thermal but no groundingline migration for now
+		self.issmb = True
 		self.ismasstransport = True
 		self.isstressbalance = True
@@ -90,4 +94,5 @@
 			return md
 
+		md = checkfield(md,'fieldname','transient.issmb','numel',[1],'values',[0,1])
 		md = checkfield(md,'fieldname','transient.ismasstransport','numel',[1],'values',[0,1])
 		md = checkfield(md,'fieldname','transient.isstressbalance','numel',[1],'values',[0,1])
@@ -104,4 +109,5 @@
 	# }}}
 	def marshall(self,md,fid):    # {{{
+		WriteData(fid,'object',self,'fieldname','issmb','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','ismasstransport','format','Boolean')
 		WriteData(fid,'object',self,'fieldname','isstressbalance','format','Boolean')
Index: /issm/trunk-jpl/src/m/contrib/hack/tres.m
===================================================================
--- /issm/trunk-jpl/src/m/contrib/hack/tres.m	(revision 19526)
+++ /issm/trunk-jpl/src/m/contrib/hack/tres.m	(revision 19527)
@@ -107,7 +107,7 @@
 		case InversionVyObsEnum(), string='vy_obs'; return
 		case BasalforcingsMeltingRateEnum(), string='basal_melting_rate'; return
-		case SurfaceforcingsAccumulationRateEnum(), string='surface_accumulation_rate'; return
-		case SurfaceforcingsAblationRateEnum(), string='surface_ablation_rate'; return
-		case SurfaceforcingsMassBalanceEnum(), string='surface_mass_balance'; return
+		case SmbAccumulationRateEnum(), string='surface_accumulation_rate'; return
+		case SmbAblationRateEnum(), string='surface_ablation_rate'; return
+		case SmbMassBalanceEnum(), string='surface_mass_balance'; return
 		otherwise, error(['Enum ' num2str(enum)  ' not found associated to any model field']);
 
Index: /issm/trunk-jpl/src/m/contrib/netCDF/ClassTry.py
===================================================================
--- /issm/trunk-jpl/src/m/contrib/netCDF/ClassTry.py	(revision 19526)
+++ /issm/trunk-jpl/src/m/contrib/netCDF/ClassTry.py	(revision 19527)
@@ -47,5 +47,5 @@
 		        'geometry':'geometry',\
 		        'constants':'constants',\
-		        'surfaceforcings':'SMB',\
+		        'smb':'SMB',\
 		        'basalforcings':'basalforcings',\
 		        'materials':'matice',\
@@ -88,5 +88,5 @@
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("geometry","[%s,%s]" % ("1x1",obj.geometry.__class__.__name__),"surface elevation, bedrock topography, ice thickness,..."))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("constants","[%s,%s]" % ("1x1",obj.constants.__class__.__name__),"physical constants"))
-		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("surfaceforcings","[%s,%s]" % ("1x1",obj.surfaceforcings.__class__.__name__),"surface forcings"))
+		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("smb","[%s,%s]" % ("1x1",obj.smb.__class__.__name__),"surface forcings"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("basalforcings","[%s,%s]" % ("1x1",obj.basalforcings.__class__.__name__),"bed forcings"))
 		string="%s\n%s" % (string,"%19s: %-22s -- %s" % ("materials","[%s,%s]" % ("1x1",obj.materials.__class__.__name__),"material properties"))
Index: /issm/trunk-jpl/src/m/enum/EnumDefinitions.py
===================================================================
--- /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 19526)
+++ /issm/trunk-jpl/src/m/enum/EnumDefinitions.py	(revision 19527)
@@ -326,4 +326,5 @@
 def TimesteppingTimeStepEnum(): return StringToEnum("TimesteppingTimeStep")[0]
 def TimesteppingInterpForcingsEnum(): return StringToEnum("TimesteppingInterpForcings")[0]
+def TransientIssmbEnum(): return StringToEnum("TransientIssmb")[0]
 def TransientIsstressbalanceEnum(): return StringToEnum("TransientIsstressbalance")[0]
 def TransientIsgroundinglineEnum(): return StringToEnum("TransientIsgroundingline")[0]
@@ -344,45 +345,48 @@
 def BalancethicknessOmegaEnum(): return StringToEnum("BalancethicknessOmega")[0]
 def BalancethicknessD0Enum(): return StringToEnum("BalancethicknessD0")[0]
-def SurfaceforcingsEnum(): return StringToEnum("Surfaceforcings")[0]
-def SMBEnum(): return StringToEnum("SMB")[0]
-def SurfaceforcingsMassBalanceEnum(): return StringToEnum("SurfaceforcingsMassBalance")[0]
+def SmbEnum(): return StringToEnum("Smb")[0]
+def SmbSolutionEnum(): return StringToEnum("SmbSolution")[0]
+def SmbNumRequestedOutputsEnum(): return StringToEnum("SmbNumRequestedOutputs")[0]
+def SmbRequestedOutputsEnum(): return StringToEnum("SmbRequestedOutputs")[0]
+def SMBforcingEnum(): return StringToEnum("SMBforcing")[0]
+def SmbMassBalanceEnum(): return StringToEnum("SmbMassBalance")[0]
 def SMBpddEnum(): return StringToEnum("SMBpdd")[0]
-def SurfaceforcingsDelta18oEnum(): return StringToEnum("SurfaceforcingsDelta18o")[0]
-def SurfaceforcingsDelta18oSurfaceEnum(): return StringToEnum("SurfaceforcingsDelta18oSurface")[0]
-def SurfaceforcingsIsdelta18oEnum(): return StringToEnum("SurfaceforcingsIsdelta18o")[0]
-def SurfaceforcingsIsmungsmEnum(): return StringToEnum("SurfaceforcingsIsmungsm")[0]
-def SurfaceforcingsIsd18opdEnum(): return StringToEnum("SurfaceforcingsIsd18opd")[0]
-def SurfaceforcingsPrecipitationsPresentdayEnum(): return StringToEnum("SurfaceforcingsPrecipitationsPresentday")[0]
-def SurfaceforcingsPrecipitationsLgmEnum(): return StringToEnum("SurfaceforcingsPrecipitationsLgm")[0]
-def SurfaceforcingsTemperaturesPresentdayEnum(): return StringToEnum("SurfaceforcingsTemperaturesPresentday")[0]
-def SurfaceforcingsTemperaturesLgmEnum(): return StringToEnum("SurfaceforcingsTemperaturesLgm")[0]
-def SurfaceforcingsPrecipitationEnum(): return StringToEnum("SurfaceforcingsPrecipitation")[0]
-def SurfaceforcingsDesfacEnum(): return StringToEnum("SurfaceforcingsDesfac")[0]
-def SurfaceforcingsS0pEnum(): return StringToEnum("SurfaceforcingsS0p")[0]
-def SurfaceforcingsS0tEnum(): return StringToEnum("SurfaceforcingsS0t")[0]
-def SurfaceforcingsRlapsEnum(): return StringToEnum("SurfaceforcingsRlaps")[0]
-def SurfaceforcingsRlapslgmEnum(): return StringToEnum("SurfaceforcingsRlapslgm")[0]
-def SurfaceforcingsPfacEnum(): return StringToEnum("SurfaceforcingsPfac")[0]
-def SurfaceforcingsTdiffEnum(): return StringToEnum("SurfaceforcingsTdiff")[0]
-def SurfaceforcingsSealevEnum(): return StringToEnum("SurfaceforcingsSealev")[0]
+def SmbDelta18oEnum(): return StringToEnum("SmbDelta18o")[0]
+def SmbDelta18oSurfaceEnum(): return StringToEnum("SmbDelta18oSurface")[0]
+def SmbIsdelta18oEnum(): return StringToEnum("SmbIsdelta18o")[0]
+def SmbIsmungsmEnum(): return StringToEnum("SmbIsmungsm")[0]
+def SmbIsd18opdEnum(): return StringToEnum("SmbIsd18opd")[0]
+def SmbPrecipitationsPresentdayEnum(): return StringToEnum("SmbPrecipitationsPresentday")[0]
+def SmbPrecipitationsLgmEnum(): return StringToEnum("SmbPrecipitationsLgm")[0]
+def SmbTemperaturesPresentdayEnum(): return StringToEnum("SmbTemperaturesPresentday")[0]
+def SmbTemperaturesLgmEnum(): return StringToEnum("SmbTemperaturesLgm")[0]
+def SmbPrecipitationEnum(): return StringToEnum("SmbPrecipitation")[0]
+def SmbDesfacEnum(): return StringToEnum("SmbDesfac")[0]
+def SmbS0pEnum(): return StringToEnum("SmbS0p")[0]
+def SmbS0tEnum(): return StringToEnum("SmbS0t")[0]
+def SmbRlapsEnum(): return StringToEnum("SmbRlaps")[0]
+def SmbRlapslgmEnum(): return StringToEnum("SmbRlapslgm")[0]
+def SmbPfacEnum(): return StringToEnum("SmbPfac")[0]
+def SmbTdiffEnum(): return StringToEnum("SmbTdiff")[0]
+def SmbSealevEnum(): return StringToEnum("SmbSealev")[0]
 def SMBd18opddEnum(): return StringToEnum("SMBd18opdd")[0]
-def SurfaceforcingsDpermilEnum(): return StringToEnum("SurfaceforcingsDpermil")[0]
+def SmbDpermilEnum(): return StringToEnum("SmbDpermil")[0]
 def SMBgradientsEnum(): return StringToEnum("SMBgradients")[0]
-def SurfaceforcingsMonthlytemperaturesEnum(): return StringToEnum("SurfaceforcingsMonthlytemperatures")[0]
-def SurfaceforcingsHrefEnum(): return StringToEnum("SurfaceforcingsHref")[0]
-def SurfaceforcingsSmbrefEnum(): return StringToEnum("SurfaceforcingsSmbref")[0]
-def SurfaceforcingsBPosEnum(): return StringToEnum("SurfaceforcingsBPos")[0]
-def SurfaceforcingsBNegEnum(): return StringToEnum("SurfaceforcingsBNeg")[0]
+def SmbMonthlytemperaturesEnum(): return StringToEnum("SmbMonthlytemperatures")[0]
+def SmbHrefEnum(): return StringToEnum("SmbHref")[0]
+def SmbSmbrefEnum(): return StringToEnum("SmbSmbref")[0]
+def SmbBPosEnum(): return StringToEnum("SmbBPos")[0]
+def SmbBNegEnum(): return StringToEnum("SmbBNeg")[0]
 def SMBhenningEnum(): return StringToEnum("SMBhenning")[0]
 def SMBcomponentsEnum(): return StringToEnum("SMBcomponents")[0]
-def SurfaceforcingsAccumulationEnum(): return StringToEnum("SurfaceforcingsAccumulation")[0]
-def SurfaceforcingsEvaporationEnum(): return StringToEnum("SurfaceforcingsEvaporation")[0]
-def SurfaceforcingsRunoffEnum(): return StringToEnum("SurfaceforcingsRunoff")[0]
+def SmbAccumulationEnum(): return StringToEnum("SmbAccumulation")[0]
+def SmbEvaporationEnum(): return StringToEnum("SmbEvaporation")[0]
+def SmbRunoffEnum(): return StringToEnum("SmbRunoff")[0]
 def SMBmeltcomponentsEnum(): return StringToEnum("SMBmeltcomponents")[0]
-def SurfaceforcingsMeltEnum(): return StringToEnum("SurfaceforcingsMelt")[0]
-def SurfaceforcingsRefreezeEnum(): return StringToEnum("SurfaceforcingsRefreeze")[0]
+def SmbMeltEnum(): return StringToEnum("SmbMelt")[0]
+def SmbRefreezeEnum(): return StringToEnum("SmbRefreeze")[0]
 def SMBgcmEnum(): return StringToEnum("SMBgcm")[0]
-def SurfaceforcingsIspddEnum(): return StringToEnum("SurfaceforcingsIspdd")[0]
-def SurfaceforcingsIssmbgradientsEnum(): return StringToEnum("SurfaceforcingsIssmbgradients")[0]
+def SmbIspddEnum(): return StringToEnum("SmbIspdd")[0]
+def SmbIssmbgradientsEnum(): return StringToEnum("SmbIssmbgradients")[0]
 def SolutionTypeEnum(): return StringToEnum("SolutionType")[0]
 def AnalysisTypeEnum(): return StringToEnum("AnalysisType")[0]
Index: sm/trunk-jpl/src/m/enum/SMBEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SMBEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SMBEnum()
-%SMBENUM - Enum of SMB
-%
-%   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=SMBEnum()
-
-macro=StringToEnum('SMB');
Index: /issm/trunk-jpl/src/m/enum/SMBforcingEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SMBforcingEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SMBforcingEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SMBforcingEnum()
+%SMBFORCINGENUM - Enum of SMBforcing
+%
+%   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=SMBforcingEnum()
+
+macro=StringToEnum('SMBforcing');
Index: /issm/trunk-jpl/src/m/enum/SmbAccumulationEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbAccumulationEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbAccumulationEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbAccumulationEnum()
+%SMBACCUMULATIONENUM - Enum of SmbAccumulation
+%
+%   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=SmbAccumulationEnum()
+
+macro=StringToEnum('SmbAccumulation');
Index: /issm/trunk-jpl/src/m/enum/SmbBNegEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbBNegEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbBNegEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbBNegEnum()
+%SMBBNEGENUM - Enum of SmbBNeg
+%
+%   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=SmbBNegEnum()
+
+macro=StringToEnum('SmbBNeg');
Index: /issm/trunk-jpl/src/m/enum/SmbBPosEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbBPosEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbBPosEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbBPosEnum()
+%SMBBPOSENUM - Enum of SmbBPos
+%
+%   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=SmbBPosEnum()
+
+macro=StringToEnum('SmbBPos');
Index: /issm/trunk-jpl/src/m/enum/SmbDelta18oEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbDelta18oEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbDelta18oEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbDelta18oEnum()
+%SMBDELTA18OENUM - Enum of SmbDelta18o
+%
+%   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=SmbDelta18oEnum()
+
+macro=StringToEnum('SmbDelta18o');
Index: /issm/trunk-jpl/src/m/enum/SmbDelta18oSurfaceEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbDelta18oSurfaceEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbDelta18oSurfaceEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbDelta18oSurfaceEnum()
+%SMBDELTA18OSURFACEENUM - Enum of SmbDelta18oSurface
+%
+%   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=SmbDelta18oSurfaceEnum()
+
+macro=StringToEnum('SmbDelta18oSurface');
Index: /issm/trunk-jpl/src/m/enum/SmbDesfacEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbDesfacEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbDesfacEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbDesfacEnum()
+%SMBDESFACENUM - Enum of SmbDesfac
+%
+%   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=SmbDesfacEnum()
+
+macro=StringToEnum('SmbDesfac');
Index: /issm/trunk-jpl/src/m/enum/SmbDpermilEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbDpermilEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbDpermilEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbDpermilEnum()
+%SMBDPERMILENUM - Enum of SmbDpermil
+%
+%   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=SmbDpermilEnum()
+
+macro=StringToEnum('SmbDpermil');
Index: /issm/trunk-jpl/src/m/enum/SmbEvaporationEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbEvaporationEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbEvaporationEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbEvaporationEnum()
+%SMBEVAPORATIONENUM - Enum of SmbEvaporation
+%
+%   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=SmbEvaporationEnum()
+
+macro=StringToEnum('SmbEvaporation');
Index: /issm/trunk-jpl/src/m/enum/SmbHrefEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbHrefEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbHrefEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbHrefEnum()
+%SMBHREFENUM - Enum of SmbHref
+%
+%   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=SmbHrefEnum()
+
+macro=StringToEnum('SmbHref');
Index: /issm/trunk-jpl/src/m/enum/SmbIsd18opdEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbIsd18opdEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbIsd18opdEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbIsd18opdEnum()
+%SMBISD18OPDENUM - Enum of SmbIsd18opd
+%
+%   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=SmbIsd18opdEnum()
+
+macro=StringToEnum('SmbIsd18opd');
Index: /issm/trunk-jpl/src/m/enum/SmbIsdelta18oEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbIsdelta18oEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbIsdelta18oEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbIsdelta18oEnum()
+%SMBISDELTA18OENUM - Enum of SmbIsdelta18o
+%
+%   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=SmbIsdelta18oEnum()
+
+macro=StringToEnum('SmbIsdelta18o');
Index: /issm/trunk-jpl/src/m/enum/SmbIsmungsmEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbIsmungsmEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbIsmungsmEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbIsmungsmEnum()
+%SMBISMUNGSMENUM - Enum of SmbIsmungsm
+%
+%   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=SmbIsmungsmEnum()
+
+macro=StringToEnum('SmbIsmungsm');
Index: /issm/trunk-jpl/src/m/enum/SmbIspddEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbIspddEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbIspddEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbIspddEnum()
+%SMBISPDDENUM - Enum of SmbIspdd
+%
+%   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=SmbIspddEnum()
+
+macro=StringToEnum('SmbIspdd');
Index: /issm/trunk-jpl/src/m/enum/SmbIssmbgradientsEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbIssmbgradientsEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbIssmbgradientsEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbIssmbgradientsEnum()
+%SMBISSMBGRADIENTSENUM - Enum of SmbIssmbgradients
+%
+%   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=SmbIssmbgradientsEnum()
+
+macro=StringToEnum('SmbIssmbgradients');
Index: /issm/trunk-jpl/src/m/enum/SmbMassBalanceEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbMassBalanceEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbMassBalanceEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbMassBalanceEnum()
+%SMBMASSBALANCEENUM - Enum of SmbMassBalance
+%
+%   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=SmbMassBalanceEnum()
+
+macro=StringToEnum('SmbMassBalance');
Index: /issm/trunk-jpl/src/m/enum/SmbMeltEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbMeltEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbMeltEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbMeltEnum()
+%SMBMELTENUM - Enum of SmbMelt
+%
+%   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=SmbMeltEnum()
+
+macro=StringToEnum('SmbMelt');
Index: /issm/trunk-jpl/src/m/enum/SmbMonthlytemperaturesEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbMonthlytemperaturesEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbMonthlytemperaturesEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbMonthlytemperaturesEnum()
+%SMBMONTHLYTEMPERATURESENUM - Enum of SmbMonthlytemperatures
+%
+%   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=SmbMonthlytemperaturesEnum()
+
+macro=StringToEnum('SmbMonthlytemperatures');
Index: /issm/trunk-jpl/src/m/enum/SmbNumRequestedOutputsEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbNumRequestedOutputsEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbNumRequestedOutputsEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbNumRequestedOutputsEnum()
+%SMBNUMREQUESTEDOUTPUTSENUM - Enum of SmbNumRequestedOutputs
+%
+%   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=SmbNumRequestedOutputsEnum()
+
+macro=StringToEnum('SmbNumRequestedOutputs');
Index: /issm/trunk-jpl/src/m/enum/SmbPfacEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbPfacEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbPfacEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbPfacEnum()
+%SMBPFACENUM - Enum of SmbPfac
+%
+%   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=SmbPfacEnum()
+
+macro=StringToEnum('SmbPfac');
Index: /issm/trunk-jpl/src/m/enum/SmbPrecipitationEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbPrecipitationEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbPrecipitationEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbPrecipitationEnum()
+%SMBPRECIPITATIONENUM - Enum of SmbPrecipitation
+%
+%   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=SmbPrecipitationEnum()
+
+macro=StringToEnum('SmbPrecipitation');
Index: /issm/trunk-jpl/src/m/enum/SmbPrecipitationsLgmEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbPrecipitationsLgmEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbPrecipitationsLgmEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbPrecipitationsLgmEnum()
+%SMBPRECIPITATIONSLGMENUM - Enum of SmbPrecipitationsLgm
+%
+%   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=SmbPrecipitationsLgmEnum()
+
+macro=StringToEnum('SmbPrecipitationsLgm');
Index: /issm/trunk-jpl/src/m/enum/SmbPrecipitationsPresentdayEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbPrecipitationsPresentdayEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbPrecipitationsPresentdayEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbPrecipitationsPresentdayEnum()
+%SMBPRECIPITATIONSPRESENTDAYENUM - Enum of SmbPrecipitationsPresentday
+%
+%   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=SmbPrecipitationsPresentdayEnum()
+
+macro=StringToEnum('SmbPrecipitationsPresentday');
Index: /issm/trunk-jpl/src/m/enum/SmbRefreezeEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbRefreezeEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbRefreezeEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbRefreezeEnum()
+%SMBREFREEZEENUM - Enum of SmbRefreeze
+%
+%   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=SmbRefreezeEnum()
+
+macro=StringToEnum('SmbRefreeze');
Index: /issm/trunk-jpl/src/m/enum/SmbRequestedOutputsEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbRequestedOutputsEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbRequestedOutputsEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbRequestedOutputsEnum()
+%SMBREQUESTEDOUTPUTSENUM - Enum of SmbRequestedOutputs
+%
+%   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=SmbRequestedOutputsEnum()
+
+macro=StringToEnum('SmbRequestedOutputs');
Index: /issm/trunk-jpl/src/m/enum/SmbRlapsEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbRlapsEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbRlapsEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbRlapsEnum()
+%SMBRLAPSENUM - Enum of SmbRlaps
+%
+%   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=SmbRlapsEnum()
+
+macro=StringToEnum('SmbRlaps');
Index: /issm/trunk-jpl/src/m/enum/SmbRlapslgmEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbRlapslgmEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbRlapslgmEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbRlapslgmEnum()
+%SMBRLAPSLGMENUM - Enum of SmbRlapslgm
+%
+%   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=SmbRlapslgmEnum()
+
+macro=StringToEnum('SmbRlapslgm');
Index: /issm/trunk-jpl/src/m/enum/SmbRunoffEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbRunoffEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbRunoffEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbRunoffEnum()
+%SMBRUNOFFENUM - Enum of SmbRunoff
+%
+%   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=SmbRunoffEnum()
+
+macro=StringToEnum('SmbRunoff');
Index: /issm/trunk-jpl/src/m/enum/SmbS0pEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbS0pEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbS0pEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbS0pEnum()
+%SMBS0PENUM - Enum of SmbS0p
+%
+%   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=SmbS0pEnum()
+
+macro=StringToEnum('SmbS0p');
Index: /issm/trunk-jpl/src/m/enum/SmbS0tEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbS0tEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbS0tEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbS0tEnum()
+%SMBS0TENUM - Enum of SmbS0t
+%
+%   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=SmbS0tEnum()
+
+macro=StringToEnum('SmbS0t');
Index: /issm/trunk-jpl/src/m/enum/SmbSealevEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbSealevEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbSealevEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbSealevEnum()
+%SMBSEALEVENUM - Enum of SmbSealev
+%
+%   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=SmbSealevEnum()
+
+macro=StringToEnum('SmbSealev');
Index: /issm/trunk-jpl/src/m/enum/SmbSmbrefEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbSmbrefEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbSmbrefEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbSmbrefEnum()
+%SMBSMBREFENUM - Enum of SmbSmbref
+%
+%   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=SmbSmbrefEnum()
+
+macro=StringToEnum('SmbSmbref');
Index: /issm/trunk-jpl/src/m/enum/SmbSolutionEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbSolutionEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbSolutionEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbSolutionEnum()
+%SMBSOLUTIONENUM - Enum of SmbSolution
+%
+%   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=SmbSolutionEnum()
+
+macro=StringToEnum('SmbSolution');
Index: /issm/trunk-jpl/src/m/enum/SmbTdiffEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbTdiffEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbTdiffEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbTdiffEnum()
+%SMBTDIFFENUM - Enum of SmbTdiff
+%
+%   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=SmbTdiffEnum()
+
+macro=StringToEnum('SmbTdiff');
Index: /issm/trunk-jpl/src/m/enum/SmbTemperaturesLgmEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbTemperaturesLgmEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbTemperaturesLgmEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbTemperaturesLgmEnum()
+%SMBTEMPERATURESLGMENUM - Enum of SmbTemperaturesLgm
+%
+%   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=SmbTemperaturesLgmEnum()
+
+macro=StringToEnum('SmbTemperaturesLgm');
Index: /issm/trunk-jpl/src/m/enum/SmbTemperaturesPresentdayEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SmbTemperaturesPresentdayEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/SmbTemperaturesPresentdayEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=SmbTemperaturesPresentdayEnum()
+%SMBTEMPERATURESPRESENTDAYENUM - Enum of SmbTemperaturesPresentday
+%
+%   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=SmbTemperaturesPresentdayEnum()
+
+macro=StringToEnum('SmbTemperaturesPresentday');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsAccumulationEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsAccumulationEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsAccumulationEnum()
-%SURFACEFORCINGSACCUMULATIONENUM - Enum of SurfaceforcingsAccumulation
-%
-%   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=SurfaceforcingsAccumulationEnum()
-
-macro=StringToEnum('SurfaceforcingsAccumulation');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsBNegEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsBNegEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsBNegEnum()
-%SURFACEFORCINGSBNEGENUM - Enum of SurfaceforcingsBNeg
-%
-%   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=SurfaceforcingsBNegEnum()
-
-macro=StringToEnum('SurfaceforcingsBNeg');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsBPosEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsBPosEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsBPosEnum()
-%SURFACEFORCINGSBPOSENUM - Enum of SurfaceforcingsBPos
-%
-%   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=SurfaceforcingsBPosEnum()
-
-macro=StringToEnum('SurfaceforcingsBPos');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsDelta18oEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsDelta18oEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsDelta18oEnum()
-%SURFACEFORCINGSDELTA18OENUM - Enum of SurfaceforcingsDelta18o
-%
-%   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=SurfaceforcingsDelta18oEnum()
-
-macro=StringToEnum('SurfaceforcingsDelta18o');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsDelta18oSurfaceEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsDelta18oSurfaceEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsDelta18oSurfaceEnum()
-%SURFACEFORCINGSDELTA18OSURFACEENUM - Enum of SurfaceforcingsDelta18oSurface
-%
-%   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=SurfaceforcingsDelta18oSurfaceEnum()
-
-macro=StringToEnum('SurfaceforcingsDelta18oSurface');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsDesfacEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsDesfacEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsDesfacEnum()
-%SURFACEFORCINGSDESFACENUM - Enum of SurfaceforcingsDesfac
-%
-%   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=SurfaceforcingsDesfacEnum()
-
-macro=StringToEnum('SurfaceforcingsDesfac');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsDpermilEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsDpermilEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsDpermilEnum()
-%SURFACEFORCINGSDPERMILENUM - Enum of SurfaceforcingsDpermil
-%
-%   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=SurfaceforcingsDpermilEnum()
-
-macro=StringToEnum('SurfaceforcingsDpermil');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsEnum()
-%SURFACEFORCINGSENUM - Enum of Surfaceforcings
-%
-%   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=SurfaceforcingsEnum()
-
-macro=StringToEnum('Surfaceforcings');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsEvaporationEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsEvaporationEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsEvaporationEnum()
-%SURFACEFORCINGSEVAPORATIONENUM - Enum of SurfaceforcingsEvaporation
-%
-%   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=SurfaceforcingsEvaporationEnum()
-
-macro=StringToEnum('SurfaceforcingsEvaporation');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsHrefEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsHrefEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsHrefEnum()
-%SURFACEFORCINGSHREFENUM - Enum of SurfaceforcingsHref
-%
-%   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=SurfaceforcingsHrefEnum()
-
-macro=StringToEnum('SurfaceforcingsHref');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsIsd18opdEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsIsd18opdEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsIsd18opdEnum()
-%SURFACEFORCINGSISD18OPDENUM - Enum of SurfaceforcingsIsd18opd
-%
-%   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=SurfaceforcingsIsd18opdEnum()
-
-macro=StringToEnum('SurfaceforcingsIsd18opd');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsIsdelta18oEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsIsdelta18oEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsIsdelta18oEnum()
-%SURFACEFORCINGSISDELTA18OENUM - Enum of SurfaceforcingsIsdelta18o
-%
-%   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=SurfaceforcingsIsdelta18oEnum()
-
-macro=StringToEnum('SurfaceforcingsIsdelta18o');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsIsmungsmEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsIsmungsmEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsIsmungsmEnum()
-%SURFACEFORCINGSISMUNGSMENUM - Enum of SurfaceforcingsIsmungsm
-%
-%   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=SurfaceforcingsIsmungsmEnum()
-
-macro=StringToEnum('SurfaceforcingsIsmungsm');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsIspddEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsIspddEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsIspddEnum()
-%SURFACEFORCINGSISPDDENUM - Enum of SurfaceforcingsIspdd
-%
-%   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=SurfaceforcingsIspddEnum()
-
-macro=StringToEnum('SurfaceforcingsIspdd');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsIssmbgradientsEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsIssmbgradientsEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsIssmbgradientsEnum()
-%SURFACEFORCINGSISSMBGRADIENTSENUM - Enum of SurfaceforcingsIssmbgradients
-%
-%   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=SurfaceforcingsIssmbgradientsEnum()
-
-macro=StringToEnum('SurfaceforcingsIssmbgradients');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsMassBalanceEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsMassBalanceEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsMassBalanceEnum()
-%SURFACEFORCINGSMASSBALANCEENUM - Enum of SurfaceforcingsMassBalance
-%
-%   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=SurfaceforcingsMassBalanceEnum()
-
-macro=StringToEnum('SurfaceforcingsMassBalance');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsMeltEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsMeltEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsMeltEnum()
-%SURFACEFORCINGSMELTENUM - Enum of SurfaceforcingsMelt
-%
-%   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=SurfaceforcingsMeltEnum()
-
-macro=StringToEnum('SurfaceforcingsMelt');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsMonthlytemperaturesEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsMonthlytemperaturesEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsMonthlytemperaturesEnum()
-%SURFACEFORCINGSMONTHLYTEMPERATURESENUM - Enum of SurfaceforcingsMonthlytemperatures
-%
-%   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=SurfaceforcingsMonthlytemperaturesEnum()
-
-macro=StringToEnum('SurfaceforcingsMonthlytemperatures');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsPfacEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsPfacEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsPfacEnum()
-%SURFACEFORCINGSPFACENUM - Enum of SurfaceforcingsPfac
-%
-%   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=SurfaceforcingsPfacEnum()
-
-macro=StringToEnum('SurfaceforcingsPfac');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsPrecipitationEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsPrecipitationEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsPrecipitationEnum()
-%SURFACEFORCINGSPRECIPITATIONENUM - Enum of SurfaceforcingsPrecipitation
-%
-%   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=SurfaceforcingsPrecipitationEnum()
-
-macro=StringToEnum('SurfaceforcingsPrecipitation');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsPrecipitationsLgmEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsPrecipitationsLgmEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsPrecipitationsLgmEnum()
-%SURFACEFORCINGSPRECIPITATIONSLGMENUM - Enum of SurfaceforcingsPrecipitationsLgm
-%
-%   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=SurfaceforcingsPrecipitationsLgmEnum()
-
-macro=StringToEnum('SurfaceforcingsPrecipitationsLgm');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsPrecipitationsPresentdayEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsPrecipitationsPresentdayEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsPrecipitationsPresentdayEnum()
-%SURFACEFORCINGSPRECIPITATIONSPRESENTDAYENUM - Enum of SurfaceforcingsPrecipitationsPresentday
-%
-%   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=SurfaceforcingsPrecipitationsPresentdayEnum()
-
-macro=StringToEnum('SurfaceforcingsPrecipitationsPresentday');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsRefreezeEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsRefreezeEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsRefreezeEnum()
-%SURFACEFORCINGSREFREEZEENUM - Enum of SurfaceforcingsRefreeze
-%
-%   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=SurfaceforcingsRefreezeEnum()
-
-macro=StringToEnum('SurfaceforcingsRefreeze');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsRlapsEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsRlapsEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsRlapsEnum()
-%SURFACEFORCINGSRLAPSENUM - Enum of SurfaceforcingsRlaps
-%
-%   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=SurfaceforcingsRlapsEnum()
-
-macro=StringToEnum('SurfaceforcingsRlaps');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsRlapslgmEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsRlapslgmEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsRlapslgmEnum()
-%SURFACEFORCINGSRLAPSLGMENUM - Enum of SurfaceforcingsRlapslgm
-%
-%   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=SurfaceforcingsRlapslgmEnum()
-
-macro=StringToEnum('SurfaceforcingsRlapslgm');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsRunoffEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsRunoffEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsRunoffEnum()
-%SURFACEFORCINGSRUNOFFENUM - Enum of SurfaceforcingsRunoff
-%
-%   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=SurfaceforcingsRunoffEnum()
-
-macro=StringToEnum('SurfaceforcingsRunoff');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsS0pEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsS0pEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsS0pEnum()
-%SURFACEFORCINGSS0PENUM - Enum of SurfaceforcingsS0p
-%
-%   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=SurfaceforcingsS0pEnum()
-
-macro=StringToEnum('SurfaceforcingsS0p');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsS0tEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsS0tEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsS0tEnum()
-%SURFACEFORCINGSS0TENUM - Enum of SurfaceforcingsS0t
-%
-%   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=SurfaceforcingsS0tEnum()
-
-macro=StringToEnum('SurfaceforcingsS0t');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsSealevEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsSealevEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsSealevEnum()
-%SURFACEFORCINGSSEALEVENUM - Enum of SurfaceforcingsSealev
-%
-%   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=SurfaceforcingsSealevEnum()
-
-macro=StringToEnum('SurfaceforcingsSealev');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsSmbrefEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsSmbrefEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsSmbrefEnum()
-%SURFACEFORCINGSSMBREFENUM - Enum of SurfaceforcingsSmbref
-%
-%   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=SurfaceforcingsSmbrefEnum()
-
-macro=StringToEnum('SurfaceforcingsSmbref');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsTdiffEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsTdiffEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsTdiffEnum()
-%SURFACEFORCINGSTDIFFENUM - Enum of SurfaceforcingsTdiff
-%
-%   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=SurfaceforcingsTdiffEnum()
-
-macro=StringToEnum('SurfaceforcingsTdiff');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsTemperaturesLgmEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsTemperaturesLgmEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsTemperaturesLgmEnum()
-%SURFACEFORCINGSTEMPERATURESLGMENUM - Enum of SurfaceforcingsTemperaturesLgm
-%
-%   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=SurfaceforcingsTemperaturesLgmEnum()
-
-macro=StringToEnum('SurfaceforcingsTemperaturesLgm');
Index: sm/trunk-jpl/src/m/enum/SurfaceforcingsTemperaturesPresentdayEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/SurfaceforcingsTemperaturesPresentdayEnum.m	(revision 19526)
+++ 	(revision )
@@ -1,11 +1,0 @@
-function macro=SurfaceforcingsTemperaturesPresentdayEnum()
-%SURFACEFORCINGSTEMPERATURESPRESENTDAYENUM - Enum of SurfaceforcingsTemperaturesPresentday
-%
-%   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=SurfaceforcingsTemperaturesPresentdayEnum()
-
-macro=StringToEnum('SurfaceforcingsTemperaturesPresentday');
Index: /issm/trunk-jpl/src/m/enum/TransientIssmbEnum.m
===================================================================
--- /issm/trunk-jpl/src/m/enum/TransientIssmbEnum.m	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/TransientIssmbEnum.m	(revision 19527)
@@ -0,0 +1,11 @@
+function macro=TransientIssmbEnum()
+%TRANSIENTISSMBENUM - Enum of TransientIssmb
+%
+%   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=TransientIssmbEnum()
+
+macro=StringToEnum('TransientIssmb');
Index: /issm/trunk-jpl/src/m/enum/list2
===================================================================
--- /issm/trunk-jpl/src/m/enum/list2	(revision 19527)
+++ /issm/trunk-jpl/src/m/enum/list2	(revision 19527)
@@ -0,0 +1,34 @@
+SurfaceforcingsHrefEnum.m
+SurfaceforcingsDesfacEnum.m
+SurfaceforcingsIsd18opdEnum.m
+SurfaceforcingsIsmungsmEnum.m
+SurfaceforcingsSealevEnum.m
+SurfaceforcingsRlapsEnum.m
+SurfaceforcingsRefreezeEnum.m
+SurfaceforcingsEnum.m
+SurfaceforcingsMonthlytemperaturesEnum.m
+SurfaceforcingsS0tEnum.m
+SurfaceforcingsMassBalanceEnum.m
+SurfaceforcingsIsdelta18oEnum.m
+SurfaceforcingsTemperaturesPresentdayEnum.m
+SurfaceforcingsDelta18oEnum.m
+SurfaceforcingsDelta18oSurfaceEnum.m
+SurfaceforcingsDpermilEnum.m
+SurfaceforcingsMeltEnum.m
+SurfaceforcingsSmbrefEnum.m
+SurfaceforcingsRunoffEnum.m
+SurfaceforcingsBPosEnum.m
+SurfaceforcingsRlapslgmEnum.m
+SurfaceforcingsPrecipitationsLgmEnum.m
+SurfaceforcingsBNegEnum.m
+SurfaceforcingsS0pEnum.m
+SurfaceforcingsIspddEnum.m
+SurfaceforcingsIssmbgradientsEnum.m
+SMBEnum.m
+SurfaceforcingsTemperaturesLgmEnum.m
+SurfaceforcingsPfacEnum.m
+SurfaceforcingsEvaporationEnum.m
+SurfaceforcingsPrecipitationsPresentdayEnum.m
+SurfaceforcingsTdiffEnum.m
+SurfaceforcingsPrecipitationEnum.m
+SurfaceforcingsAccumulationEnum.m
Index: /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.m
===================================================================
--- /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.m	(revision 19526)
+++ /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.m	(revision 19527)
@@ -198,9 +198,9 @@
 	elseif strcmp(fieldname,'TotalSmb'),
 		field = field/10.^12*yts; %(GigaTon/year)
-	elseif strcmp(fieldname,'SurfaceforcingsMassBalance'),
-		field = field*yts;
-	elseif strcmp(fieldname,'SurfaceforcingsAccumulation'),
-		field = field*yts;
-	elseif strcmp(fieldname,'SurfaceforcingsMelt'),
+	elseif strcmp(fieldname,'SmbMassBalance'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbAccumulation'),
+		field = field*yts;
+	elseif strcmp(fieldname,'SmbMelt'),
 		field = field*yts;
 	elseif strcmp(fieldname,'CalvingCalvingrate'),
Index: /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py
===================================================================
--- /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py	(revision 19526)
+++ /issm/trunk-jpl/src/m/solve/parseresultsfromdisk.py	(revision 19527)
@@ -220,5 +220,5 @@
 		elif m.strcmp(fieldname,'TotalSmb'):
 			field = field/10.**12.*yts #(GigaTon/year)
-		elif m.strcmp(fieldname,'SurfaceforcingsMassBalance'):
+		elif m.strcmp(fieldname,'SmbMassBalance'):
 			field = field*yts
 		elif m.strcmp(fieldname,'CalvingCalvingrate'):
Index: /issm/trunk-jpl/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp
===================================================================
--- /issm/trunk-jpl/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp	(revision 19526)
+++ /issm/trunk-jpl/src/wrappers/InterpFromMeshToMesh2d/InterpFromMeshToMesh2d.cpp	(revision 19527)
@@ -20,5 +20,5 @@
 	_printf0_("      data_interp       : vector of mesh interpolated data.\n");
 	_printf0_("      Available options :\n");
-	_printf0_("         - 'default' : default value if point is outsite of triangulation (instead of linear interolation)\n");
+	_printf0_("         - 'default' : default value if point is outsite of triangulation (instead of linear interpolation)\n");
 	_printf0_("\n");
 	_printf0_("   Example:\n");
Index: /issm/trunk-jpl/test/NightlyRun/gemb.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/gemb.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/gemb.m	(revision 19527)
@@ -9,5 +9,5 @@
 
 % Use of Gemb method for SMB computation
-md.surfaceforcings = SMBgemb(md.mesh,md.geometry);
+md.smb = SMBgemb(md.mesh,md.geometry);
 
 %load hourly surface forcing date from 1979 to 2009:
@@ -15,19 +15,19 @@
 
 dateN=inputs.dateN/365.25; %convert in years
-md.surfaceforcings.Ta=[repmat(inputs.Ta0',md.mesh.numberofelements,1);dateN'];
-md.surfaceforcings.V=[repmat(inputs.V0',md.mesh.numberofelements,1);dateN'];
-md.surfaceforcings.dswrf=[repmat(inputs.dsw0',md.mesh.numberofelements,1);dateN'];
-md.surfaceforcings.dlwrf=[repmat(inputs.dlw0',md.mesh.numberofelements,1);dateN'];
-md.surfaceforcings.P=[repmat(inputs.P0',md.mesh.numberofelements,1);dateN'];
-md.surfaceforcings.eAir=[repmat(inputs.eAir0',md.mesh.numberofelements,1);dateN'];
-md.surfaceforcings.pAir=[repmat(inputs.pAir0',md.mesh.numberofelements,1);dateN'];
+md.smb.Ta=[repmat(inputs.Ta0',md.mesh.numberofelements,1);dateN'];
+md.smb.V=[repmat(inputs.V0',md.mesh.numberofelements,1);dateN'];
+md.smb.dswrf=[repmat(inputs.dsw0',md.mesh.numberofelements,1);dateN'];
+md.smb.dlwrf=[repmat(inputs.dlw0',md.mesh.numberofelements,1);dateN'];
+md.smb.P=[repmat(inputs.P0',md.mesh.numberofelements,1);dateN'];
+md.smb.eAir=[repmat(inputs.eAir0',md.mesh.numberofelements,1);dateN'];
+md.smb.pAir=[repmat(inputs.pAir0',md.mesh.numberofelements,1);dateN'];
 
-md.surfaceforcings.Vz=inputs.LP.Vz;
-md.surfaceforcings.Tz=inputs.LP.Tz;
-md.surfaceforcings.Tmean=inputs.LP.Tmean;
-md.surfaceforcings.C=inputs.LP.C;
+md.smb.Vz=inputs.LP.Vz;
+md.smb.Tz=inputs.LP.Tz;
+md.smb.Tmean=inputs.LP.Tmean;
+md.smb.C=inputs.LP.C;
 
 %settings
-md.surfaceforcings.spinUp=2
+md.smb.spinUp=2;
 
 %Run transient
Index: /issm/trunk-jpl/test/NightlyRun/test105.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test105.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test105.m	(revision 19527)
@@ -5,4 +5,5 @@
 md=setflowequation(md,'SSA','all');
 md.cluster=generic('name',oshostname(),'np',3);
+md.verbose=verbose('11111111');
 md=solve(md,MasstransportSolutionEnum());
 
Index: /issm/trunk-jpl/test/NightlyRun/test109.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test109.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test109.m	(revision 19527)
@@ -8,4 +8,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=0;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk-jpl/test/NightlyRun/test109.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test109.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test109.py	(revision 19527)
@@ -17,4 +17,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=False
 md.transient.isthermal=True
 md.transient.isgroundingline=False
Index: /issm/trunk-jpl/test/NightlyRun/test1201.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test1201.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test1201.m	(revision 19527)
@@ -10,5 +10,5 @@
 	md=setmask(md,'all','');
 	md=parameterize(md,'../Par/SquareEISMINT.par');
-	md.surfaceforcings.mass_balance(:)=0.;
+	md.smb.mass_balance(:)=0.;
 	md=setflowequation(md,'SSA','all');
 	md.cluster=generic('name',oshostname(),'np',8);
Index: /issm/trunk-jpl/test/NightlyRun/test1201.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test1201.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test1201.py	(revision 19527)
@@ -23,5 +23,5 @@
 	md=setmask(md,'all','')
 	md=parameterize(md,'../Par/SquareEISMINT.py')
-	md.surfaceforcings.mass_balance[:]=0.
+	md.smb.mass_balance[:]=0.
 	md=setflowequation(md,'SSA','all')
 	md.cluster=generic('name',oshostname(),'np',8)
Index: /issm/trunk-jpl/test/NightlyRun/test121.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test121.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test121.m	(revision 19527)
@@ -10,4 +10,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=0;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk-jpl/test/NightlyRun/test121.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test121.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test121.py	(revision 19527)
@@ -19,4 +19,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=False
 md.transient.isthermal=True
 md.transient.isgroundingline=False
Index: /issm/trunk-jpl/test/NightlyRun/test1501.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test1501.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test1501.m	(revision 19527)
@@ -15,5 +15,5 @@
 %Solve for thinning rate -> -1 * surface mass balance
 smb= 2.*ones(md.mesh.numberofvertices,1);
-md.surfaceforcings.mass_balance= smb;
+md.smb.mass_balance= smb;
 md.basalforcings.groundedice_melting_rate= smb;
 
@@ -22,24 +22,24 @@
 for i=1:10
 	 md=solve(md,MasstransportSolutionEnum());
-	 md.surfaceforcings.mass_balance= md.surfaceforcings.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness);
+	 md.smb.mass_balance= md.smb.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness);
 end
 
 %Set up transient
-smb = md.surfaceforcings.mass_balance;
+smb = md.smb.mass_balance;
 
 tooth= [ [ones(400,1)*(smb') - 10.]' [ones(400,1)*(smb')]' ];
 smb=[ [ones(399,1)*(smb')]' smb  tooth tooth];
 
-md.surfaceforcings.mass_balance= smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.:2000.];
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.:2000.];
 
 md=solve(md,TransientSolutionEnum());
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4', ...
-	'Vx5','Vy5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SurfaceforcingsMassBalance5'};
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4', ...
+	'Vx5','Vy5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SmbMassBalance5'};
 field_tolerances={1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
 	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
@@ -55,5 +55,5 @@
 	(md.results.TransientSolution(400).Surface),...
 	(md.results.TransientSolution(400).Thickness),...
-	(md.results.TransientSolution(400).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(400).SmbMassBalance),...
 	(md.results.TransientSolution(800).Vx),...
 	(md.results.TransientSolution(800).Vy),...
@@ -63,5 +63,5 @@
 	(md.results.TransientSolution(800).Surface),...
 	(md.results.TransientSolution(800).Thickness),...
-	(md.results.TransientSolution(800).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(800).SmbMassBalance),...
 	(md.results.TransientSolution(1200).Vx),...
 	(md.results.TransientSolution(1200).Vy),...
@@ -71,5 +71,5 @@
 	(md.results.TransientSolution(1200).Surface),...
 	(md.results.TransientSolution(1200).Thickness),...
-	(md.results.TransientSolution(1200).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1200).SmbMassBalance),...
 	(md.results.TransientSolution(1600).Vx),...
 	(md.results.TransientSolution(1600).Vy),...
@@ -79,5 +79,5 @@
 	(md.results.TransientSolution(1600).Surface),...
 	(md.results.TransientSolution(1600).Thickness),...
-	(md.results.TransientSolution(1600).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1600).SmbMassBalance),...
 	(md.results.TransientSolution(2000).Vx),...
 	(md.results.TransientSolution(2000).Vy),...
@@ -87,5 +87,5 @@
 	(md.results.TransientSolution(2000).Surface),...
 	(md.results.TransientSolution(2000).Thickness),...
-	(md.results.TransientSolution(2000).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2000).SmbMassBalance),...
 	};
 
@@ -109,5 +109,5 @@
 		thickness = [thickness (md.results.TransientSolution(t).Thickness)];
 		volume = [volume mean(md.results.TransientSolution(t).Thickness.value,2).*areas];
-		massbal = [massbal (md.results.TransientSolution(t).SurfaceforcingsMassBalance)];
+		massbal = [massbal (md.results.TransientSolution(t).SmbMassBalance)];
 		velocity = [velocity (md.results.TransientSolution(t).Vel)];
 	end
Index: /issm/trunk-jpl/test/NightlyRun/test1501.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test1501.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test1501.py	(revision 19527)
@@ -26,5 +26,5 @@
 #Solve for thinning rate -> -1 * surface mass balance
 smb= 2.*numpy.ones((md.mesh.numberofvertices,1))
-md.surfaceforcings.mass_balance= smb
+md.smb.mass_balance= smb
 md.basalforcings.groundedice_melting_rate= smb
 
@@ -33,8 +33,8 @@
 for i in xrange(1,11):
 	 md=solve(md,MasstransportSolutionEnum())
-	 md.surfaceforcings.mass_balance= md.surfaceforcings.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness)
+	 md.smb.mass_balance= md.smb.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness)
 
 #Set up transient
-smb = md.surfaceforcings.mass_balance
+smb = md.smb.mass_balance
 
 #tooth= [ [ones(400,1)*(smb') - 10.]' [ones(400,1)*(smb')]' ];
@@ -43,16 +43,16 @@
 smb=numpy.hstack((numpy.tile(smb,(1,399)),smb,tooth,tooth))
 
-#md.surfaceforcings.mass_balance= smb;
-#md.surfaceforcings.mass_balance(end+1,:)=[1.:2000.];
-md.surfaceforcings.mass_balance=numpy.vstack((smb,numpy.arange(1,2001)))
+#md.smb.mass_balance= smb;
+#md.smb.mass_balance(end+1,:)=[1.:2000.];
+md.smb.mass_balance=numpy.vstack((smb,numpy.arange(1,2001)))
 
 md=solve(md,TransientSolutionEnum())
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4', \
-	'Vx5','Vy5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SurfaceforcingsMassBalance5']
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4', \
+	'Vx5','Vy5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SmbMassBalance5']
 field_tolerances=[1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
 	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
@@ -68,5 +68,5 @@
 	md.results.TransientSolution[400-1].Surface,\
 	md.results.TransientSolution[400-1].Thickness,\
-	md.results.TransientSolution[400-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[400-1].SmbMassBalance,\
 	md.results.TransientSolution[800-1].Vx,\
 	md.results.TransientSolution[800-1].Vy,\
@@ -76,5 +76,5 @@
 	md.results.TransientSolution[800-1].Surface,\
 	md.results.TransientSolution[800-1].Thickness,\
-	md.results.TransientSolution[800-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[800-1].SmbMassBalance,\
 	md.results.TransientSolution[1200-1].Vx,\
 	md.results.TransientSolution[1200-1].Vy,\
@@ -84,5 +84,5 @@
 	md.results.TransientSolution[1200-1].Surface,\
 	md.results.TransientSolution[1200-1].Thickness,\
-	md.results.TransientSolution[1200-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1200-1].SmbMassBalance,\
 	md.results.TransientSolution[1600-1].Vx,\
 	md.results.TransientSolution[1600-1].Vy,\
@@ -92,5 +92,5 @@
 	md.results.TransientSolution[1600-1].Surface,\
 	md.results.TransientSolution[1600-1].Thickness,\
-	md.results.TransientSolution[1600-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1600-1].SmbMassBalance,\
 	md.results.TransientSolution[2000-1].Vx,\
 	md.results.TransientSolution[2000-1].Vy,\
@@ -100,5 +100,5 @@
 	md.results.TransientSolution[2000-1].Surface,\
 	md.results.TransientSolution[2000-1].Thickness,\
-	md.results.TransientSolution[2000-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2000-1].SmbMassBalance,\
 	]
 
@@ -124,5 +124,5 @@
 		thickness = [thickness (md.results.TransientSolution(t).Thickness)];
 		volume = [volume mean(md.results.TransientSolution(t).Thickness.value,2).*areas];
-		massbal = [massbal (md.results.TransientSolution(t).SurfaceforcingsMassBalance)];
+		massbal = [massbal (md.results.TransientSolution(t).SmbMassBalance)];
 		velocity = [velocity (md.results.TransientSolution(t).Vel)];
 	end
Index: /issm/trunk-jpl/test/NightlyRun/test1502.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test1502.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test1502.m	(revision 19527)
@@ -16,5 +16,5 @@
 %Solve for thinning rate -> -1 * surface mass balance
 smb= 2.*ones(md.mesh.numberofvertices,1);
-md.surfaceforcings.mass_balance= smb;
+md.smb.mass_balance= smb;
 md.basalforcings.groundedice_melting_rate= smb;
 
@@ -23,24 +23,24 @@
 for i=1:10
 	 md=solve(md,MasstransportSolutionEnum());
-	 md.surfaceforcings.mass_balance= md.surfaceforcings.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness);
+	 md.smb.mass_balance= md.smb.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness);
 end
 
 %Set up transient
-smb = md.surfaceforcings.mass_balance;
+smb = md.smb.mass_balance;
 
 tooth= [ [ones(400,1)*(smb') - 10.]' [ones(400,1)*(smb')]' ];
 smb=[ [ones(399,1)*(smb')]' smb  tooth tooth];
 
-md.surfaceforcings.mass_balance= smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.:2000.];
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.:2000.];
 
 md=solve(md,TransientSolutionEnum());
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4', ...
-	'Vx5','Vy5','Vz5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SurfaceforcingsMassBalance5'};
+field_names={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4', ...
+	'Vx5','Vy5','Vz5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SmbMassBalance5'};
 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,...
@@ -57,5 +57,5 @@
 	(md.results.TransientSolution(400).Surface),...
 	(md.results.TransientSolution(400).Thickness),...
-	(md.results.TransientSolution(400).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(400).SmbMassBalance),...
 	(md.results.TransientSolution(800).Vx),...
 	(md.results.TransientSolution(800).Vy),...
@@ -66,5 +66,5 @@
 	(md.results.TransientSolution(800).Surface),...
 	(md.results.TransientSolution(800).Thickness),...
-	(md.results.TransientSolution(800).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(800).SmbMassBalance),...
 	(md.results.TransientSolution(1200).Vx),...
 	(md.results.TransientSolution(1200).Vy),...
@@ -75,5 +75,5 @@
 	(md.results.TransientSolution(1200).Surface),...
 	(md.results.TransientSolution(1200).Thickness),...
-	(md.results.TransientSolution(1200).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1200).SmbMassBalance),...
 	(md.results.TransientSolution(1600).Vx),...
 	(md.results.TransientSolution(1600).Vy),...
@@ -84,5 +84,5 @@
 	(md.results.TransientSolution(1600).Surface),...
 	(md.results.TransientSolution(1600).Thickness),...
-	(md.results.TransientSolution(1600).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1600).SmbMassBalance),...
 	(md.results.TransientSolution(2000).Vx),...
 	(md.results.TransientSolution(2000).Vy),...
@@ -93,5 +93,5 @@
 	(md.results.TransientSolution(2000).Surface),...
 	(md.results.TransientSolution(2000).Thickness),...
-	(md.results.TransientSolution(2000).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2000).SmbMassBalance),...
 	};
 
@@ -115,5 +115,5 @@
 		thickness = [thickness (md.results.TransientSolution(t).Thickness)];
 		volume = [volume mean(md.results.TransientSolution(t).Thickness.value,2).*areas];
-		massbal = [massbal (md.results.TransientSolution(t).SurfaceforcingsMassBalance)];
+		massbal = [massbal (md.results.TransientSolution(t).SmbMassBalance)];
 		velocity = [velocity (md.results.TransientSolution(t).Vel)];
 	end
Index: /issm/trunk-jpl/test/NightlyRun/test1502.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test1502.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test1502.py	(revision 19527)
@@ -27,5 +27,5 @@
 #Solve for thinning rate -> -1 * surface mass balance
 smb= 2.*numpy.ones((md.mesh.numberofvertices,1))
-md.surfaceforcings.mass_balance= smb
+md.smb.mass_balance= smb
 md.basalforcings.groundedice_melting_rate= smb
 
@@ -34,8 +34,8 @@
 for i in xrange(1,11):
 	 md=solve(md,MasstransportSolutionEnum())
-	 md.surfaceforcings.mass_balance= md.surfaceforcings.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness)
+	 md.smb.mass_balance= md.smb.mass_balance - ((md.results.MasstransportSolution.Thickness)-md.geometry.thickness)
 
 #Set up transient
-smb = md.surfaceforcings.mass_balance
+smb = md.smb.mass_balance
 
 #tooth= [ [ones(400,1)*(smb') - 10.]' [ones(400,1)*(smb')]' ];
@@ -44,16 +44,16 @@
 smb=numpy.hstack((numpy.tile(smb,(1,399)),smb,tooth,tooth))
 
-#md.surfaceforcings.mass_balance= smb;
-#md.surfaceforcings.mass_balance(end+1,:)=[1.:2000.];
-md.surfaceforcings.mass_balance=numpy.vstack((smb,numpy.arange(1,2001)))
+#md.smb.mass_balance= smb;
+#md.smb.mass_balance(end+1,:)=[1.:2000.];
+md.smb.mass_balance=numpy.vstack((smb,numpy.arange(1,2001)))
 
 md=solve(md,TransientSolutionEnum())
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4', \
-	'Vx5','Vy5','Vz5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SurfaceforcingsMassBalance5']
+field_names=['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4', \
+	'Vx5','Vy5','Vz5','Vel5','Pressure5','Bed5','Surface5','Thickness5','SmbMassBalance5']
 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,\
@@ -70,5 +70,5 @@
 	md.results.TransientSolution[400-1].Surface,\
 	md.results.TransientSolution[400-1].Thickness,\
-	md.results.TransientSolution[400-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[400-1].SmbMassBalance,\
 	md.results.TransientSolution[800-1].Vx,\
 	md.results.TransientSolution[800-1].Vy,\
@@ -79,5 +79,5 @@
 	md.results.TransientSolution[800-1].Surface,\
 	md.results.TransientSolution[800-1].Thickness,\
-	md.results.TransientSolution[800-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[800-1].SmbMassBalance,\
 	md.results.TransientSolution[1200-1].Vx,\
 	md.results.TransientSolution[1200-1].Vy,\
@@ -88,5 +88,5 @@
 	md.results.TransientSolution[1200-1].Surface,\
 	md.results.TransientSolution[1200-1].Thickness,\
-	md.results.TransientSolution[1200-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1200-1].SmbMassBalance,\
 	md.results.TransientSolution[1600-1].Vx,\
 	md.results.TransientSolution[1600-1].Vy,\
@@ -97,5 +97,5 @@
 	md.results.TransientSolution[1600-1].Surface,\
 	md.results.TransientSolution[1600-1].Thickness,\
-	md.results.TransientSolution[1600-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1600-1].SmbMassBalance,\
 	md.results.TransientSolution[2000-1].Vx,\
 	md.results.TransientSolution[2000-1].Vy,\
@@ -106,5 +106,5 @@
 	md.results.TransientSolution[2000-1].Surface,\
 	md.results.TransientSolution[2000-1].Thickness,\
-	md.results.TransientSolution[2000-1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2000-1].SmbMassBalance,\
 	]
 
@@ -130,5 +130,5 @@
 		thickness = [thickness (md.results.TransientSolution(t).Thickness)];
 		volume = [volume mean(md.results.TransientSolution(t).Thickness.value,2).*areas];
-		massbal = [massbal (md.results.TransientSolution(t).SurfaceforcingsMassBalance)];
+		massbal = [massbal (md.results.TransientSolution(t).SmbMassBalance)];
 		velocity = [velocity (md.results.TransientSolution(t).Vel)];
 	end
Index: /issm/trunk-jpl/test/NightlyRun/test207.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test207.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test207.m	(revision 19527)
@@ -8,4 +8,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=0;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk-jpl/test/NightlyRun/test207.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test207.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test207.py	(revision 19527)
@@ -19,4 +19,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=False
 md.transient.isthermal=True
 md.transient.isgroundingline=False
Index: /issm/trunk-jpl/test/NightlyRun/test228.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test228.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test228.m	(revision 19527)
@@ -14,6 +14,6 @@
 smb=[ smb smb*-1. ];
 
-md.surfaceforcings.mass_balance=smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.5 3.];
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
 md.transient.isthermal=0;
 
@@ -21,8 +21,8 @@
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4'};
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
 field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
@@ -37,5 +37,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -45,5 +45,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -53,5 +53,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -61,4 +61,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test228.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test228.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test228.py	(revision 19527)
@@ -24,5 +24,5 @@
 smb=numpy.hstack((smb,smb*-1.))
 
-md.surfaceforcings.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
 md.transient.isthermal=False
 
@@ -30,8 +30,8 @@
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4']
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
 field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
@@ -46,5 +46,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -54,5 +54,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -62,5 +62,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -70,4 +70,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test229.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test229.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test229.m	(revision 19527)
@@ -14,6 +14,6 @@
 smb=[ smb smb*2. ];
 
-md.surfaceforcings.mass_balance=smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.5 3.];
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
 md.transient.isthermal=0;
 
@@ -21,8 +21,8 @@
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4'};
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
 field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
@@ -37,5 +37,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -45,5 +45,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -53,5 +53,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -61,4 +61,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test229.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test229.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test229.py	(revision 19527)
@@ -24,5 +24,5 @@
 smb=numpy.hstack((smb,smb*2.))
 
-md.surfaceforcings.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
 md.transient.isthermal=False
 
@@ -30,8 +30,8 @@
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4']
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
 field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
@@ -46,5 +46,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -54,5 +54,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -62,5 +62,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -70,4 +70,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test230.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test230.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test230.m	(revision 19527)
@@ -15,6 +15,6 @@
 smb=[ smb smb*-1. ];
 
-md.surfaceforcings.mass_balance=smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.5 3.];
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
 md.transient.isthermal=0;
 
@@ -22,8 +22,8 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassbalance4'};
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'};
 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,...
@@ -39,5 +39,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -48,5 +48,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -57,5 +57,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -66,4 +66,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test230.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test230.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test230.py	(revision 19527)
@@ -25,5 +25,5 @@
 smb=numpy.hstack((smb,smb*-1.))
 
-md.surfaceforcings.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
 md.transient.isthermal=False
 
@@ -31,8 +31,8 @@
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassbalance4']
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4']
 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,\
@@ -48,5 +48,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -57,5 +57,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -66,5 +66,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -75,4 +75,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test231.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test231.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test231.m	(revision 19527)
@@ -15,6 +15,6 @@
 smb=[ smb smb*2. ];
 
-md.surfaceforcings.mass_balance=smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.5 3.];
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
 md.transient.isthermal=0;
 
@@ -22,8 +22,8 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassbalance4'};
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'};
 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,...
@@ -39,5 +39,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -48,5 +48,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -57,5 +57,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -66,4 +66,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test231.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test231.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test231.py	(revision 19527)
@@ -25,5 +25,5 @@
 smb=numpy.hstack((smb,smb*2.))
 
-md.surfaceforcings.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
 md.transient.isthermal=False
 
@@ -31,8 +31,8 @@
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassbalance4']
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4']
 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,\
@@ -48,5 +48,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -57,5 +57,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -66,5 +66,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -75,4 +75,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test232.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test232.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test232.m	(revision 19527)
@@ -11,4 +11,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=0;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk-jpl/test/NightlyRun/test232.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test232.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test232.py	(revision 19527)
@@ -21,4 +21,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=False
 md.transient.isthermal=True
 md.transient.isgroundingline=False
Index: /issm/trunk-jpl/test/NightlyRun/test234.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test234.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test234.m	(revision 19527)
@@ -13,6 +13,6 @@
 smb=[ smb smb*-1 ];
 
-md.surfaceforcings.mass_balance= smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.5 3];
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.5 3];
 md.transient.isthermal=0;
 %Dakota options
@@ -24,5 +24,5 @@
 
 %variables
-md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SurfaceforcingsMassBalance',1,0.1);
+md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,0.1);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test235.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test235.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test235.m	(revision 19527)
@@ -13,6 +13,6 @@
 smb=[ smb smb*-1 ];
 
-md.surfaceforcings.mass_balance= smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.5 3];
+md.smb.mass_balance= smb;
+md.smb.mass_balance(end+1,:)=[1.5 3];
 md.transient.isthermal=0;
 %Dakota options
@@ -24,5 +24,5 @@
 
 %variables
-md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SurfaceforcingsMassBalance',1,100);
+md.qmu.variables.surface_mass_balance=normal_uncertain('scaled_SmbMassBalance',1,100);
 
 %responses
Index: /issm/trunk-jpl/test/NightlyRun/test236.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test236.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test236.m	(revision 19527)
@@ -7,18 +7,18 @@
 
 % Use of ispdd and isdelta18o methods
-md.surfaceforcings = SMBpdd();
-md.surfaceforcings.isdelta18o=1;
-md.surfaceforcings.ismungsm=0;
+md.smb = SMBpdd();
+md.smb.isdelta18o=1;
+md.smb.ismungsm=0;
 
-%md.surfaceforcings.precipitation(1:md.mesh.numberofvertices,1:12)=0;
-%md.surfaceforcings.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
+%md.smb.precipitation(1:md.mesh.numberofvertices,1:12)=0;
+%md.smb.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
 
 % Add temperature, precipitation and delta18o needed to measure the surface mass balance
 %  creating delta18o
 load '../Data/delta18o.data'
-md.surfaceforcings.delta18o=delta18o;
+md.smb.delta18o=delta18o;
 % creating delta18oSurface
-md.surfaceforcings.delta18o_surface(1,1:(length(delta18o))) = 0;
-md.surfaceforcings.delta18o_surface(2,:) = delta18o(2,:);
+md.smb.delta18o_surface(1,1:(length(delta18o))) = 0;
+md.smb.delta18o_surface(2,:) = delta18o(2,:);
 
 % creating Present day and lgm temperatures
@@ -26,36 +26,36 @@
 tmonth(1:12)=238.15+20.;
 for imonth=0:11
-    md.surfaceforcings.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
-    md.surfaceforcings.temperatures_lgm(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1)-20.;
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+    md.smb.temperatures_lgm(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1)-20.;
     % Time for the last line:
-    md.surfaceforcings.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
-    md.surfaceforcings.temperatures_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.temperatures_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
 end
 
 % creating initialization and spc temperatures initialization and
 % spc
-md.thermal.spctemperature=mean(md.surfaceforcings.temperatures_lgm(1:md.mesh.numberofvertices,1:12),2); %-10*ones(md.mesh.numberofvertices,1);
+md.thermal.spctemperature=mean(md.smb.temperatures_lgm(1:md.mesh.numberofvertices,1:12),2); %-10*ones(md.mesh.numberofvertices,1);
 md.thermal.spctemperature=repmat(md.thermal.spctemperature,1,md.timestepping.final_time/md.timestepping.time_step);
 itemp=0:md.timestepping.time_step:md.timestepping.final_time-md.timestepping.time_step;
 md.thermal.spctemperature(md.mesh.numberofvertices+1,:)=itemp;
 
-md.initialization.temperature=md.surfaceforcings.temperatures_lgm(1:md.mesh.numberofvertices,1); %*ones(md.mesh.numberofvertices,1);
-md.surfaceforcings = initialize(md.surfaceforcings,md);
+md.initialization.temperature=md.smb.temperatures_lgm(1:md.mesh.numberofvertices,1); %*ones(md.mesh.numberofvertices,1);
+md.smb = initialize(md.smb,md);
 
 % creating precipitation
 for imonth=0:11
-    md.surfaceforcings.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
-    md.surfaceforcings.precipitations_lgm(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    md.smb.precipitations_lgm(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
     % Time for the last line:
-    md.surfaceforcings.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
-    md.surfaceforcings.precipitations_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.precipitations_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
 end
 
 % Interpolation factors
-md.surfaceforcings.Tdiff(1,1:md.timestepping.final_time)=0.5;
-md.surfaceforcings.sealev(1,1:md.timestepping.final_time)=0.5;
+md.smb.Tdiff(1,1:md.timestepping.final_time)=0.5;
+md.smb.sealev(1,1:md.timestepping.final_time)=0.5;
 % Year of each data point
-md.surfaceforcings.Tdiff(2,1:md.timestepping.final_time)=1:1:md.timestepping.final_time;
-md.surfaceforcings.sealev(2,1:md.timestepping.final_time)=1:1:md.timestepping.final_time;
+md.smb.Tdiff(2,1:md.timestepping.final_time)=1:1:md.timestepping.final_time;
+md.smb.sealev(2,1:md.timestepping.final_time)=1:1:md.timestepping.final_time;
 
 % time steps and resolution
@@ -65,5 +65,5 @@
 
 % 
-md.transient.requested_outputs={'default','SurfaceforcingsMonthlytemperatures'};
+md.transient.requested_outputs={'default','SmbMonthlytemperatures'};
 md=setflowequation(md,'SSA','all');
 md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
@@ -71,7 +71,7 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMonthlytemperatures1','SurfaceforcingsMassBalance1',...
-	   'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMonthlytemperatures2','SurfaceforcingsMassBalance2',...
-	   'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMonthlytemperatures3','SurfaceforcingsMassBalance3'};
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',...
+	   'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',...
+	   'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'};
 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,...
@@ -85,6 +85,6 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -94,6 +94,6 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -103,5 +103,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test236.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test236.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test236.py	(revision 19527)
@@ -15,52 +15,52 @@
 
 # Use of ispdd and isdelta18o methods
-md.surfaceforcings = SMBpdd();
-md.surfaceforcings.isdelta18o=1
-md.surfaceforcings.ismungsm=0
+md.smb = SMBpdd();
+md.smb.isdelta18o=1
+md.smb.ismungsm=0
 
 # Add temperature, precipitation and delta18o needed to measure the surface mass balance
 # creating delta18o
 delta18o=numpy.loadtxt('../Data/delta18o.data')
-md.surfaceforcings.delta18o=delta18o
+md.smb.delta18o=delta18o
 # creating delta18oSurface
-md.surfaceforcings.delta18o_surface = numpy.zeros((2,numpy.size(delta18o,axis=1)))
-md.surfaceforcings.delta18o_surface[1,:] = delta18o[1,:]
+md.smb.delta18o_surface = numpy.zeros((2,numpy.size(delta18o,axis=1)))
+md.smb.delta18o_surface[1,:] = delta18o[1,:]
 
 # creating Present day and lgm temperatures
 # Same temperature over the all region:
 tmonth=numpy.ones(12)*(238.15+20.)
-md.surfaceforcings.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
-md.surfaceforcings.temperatures_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.temperatures_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
 for imonth in xrange(0,12):
-    md.surfaceforcings.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
-    md.surfaceforcings.temperatures_lgm[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]-20.
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
+    md.smb.temperatures_lgm[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]-20.
     # Time for the last line:
-    md.surfaceforcings.temperatures_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
-    md.surfaceforcings.temperatures_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.temperatures_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.temperatures_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
 
 # creating initialization and spc temperatures initialization and spc
-md.thermal.spctemperature=numpy.mean(md.surfaceforcings.temperatures_lgm[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)    #-10*ones(md.mesh.numberofvertices,1)
+md.thermal.spctemperature=numpy.mean(md.smb.temperatures_lgm[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)    #-10*ones(md.mesh.numberofvertices,1)
 md.thermal.spctemperature=numpy.tile(md.thermal.spctemperature,(1,md.timestepping.final_time/md.timestepping.time_step))
 itemp=numpy.arange(0,md.timestepping.final_time,md.timestepping.time_step)
 md.thermal.spctemperature=numpy.vstack((md.thermal.spctemperature,itemp.reshape(1,-1)))
 
-md.initialization.temperature=md.surfaceforcings.temperatures_lgm[0:md.mesh.numberofvertices,0]    #*ones(md.mesh.numberofvertices,1)
-md.surfaceforcings.initialize(md)
+md.initialization.temperature=md.smb.temperatures_lgm[0:md.mesh.numberofvertices,0]    #*ones(md.mesh.numberofvertices,1)
+md.smb.initialize(md)
 
 # creating precipitation
-md.surfaceforcings.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
-md.surfaceforcings.precipitations_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.precipitations_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
 for imonth in xrange(0,12):
-    md.surfaceforcings.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
-    md.surfaceforcings.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
-    md.surfaceforcings.precipitations_lgm[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
-    md.surfaceforcings.precipitations_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.precipitations_lgm[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
 
 # Interpolation factors
-md.surfaceforcings.Tdiff=0.5*numpy.ones((2,md.timestepping.final_time))
-md.surfaceforcings.sealev=0.5*numpy.ones((2,md.timestepping.final_time))
+md.smb.Tdiff=0.5*numpy.ones((2,md.timestepping.final_time))
+md.smb.sealev=0.5*numpy.ones((2,md.timestepping.final_time))
 # Year of each data point
-md.surfaceforcings.Tdiff[1,1:md.timestepping.final_time]=numpy.arange(1.,md.timestepping.final_time)
-md.surfaceforcings.sealev[1,1:md.timestepping.final_time]=numpy.arange(1.,md.timestepping.final_time)
+md.smb.Tdiff[1,1:md.timestepping.final_time]=numpy.arange(1.,md.timestepping.final_time)
+md.smb.sealev[1,1:md.timestepping.final_time]=numpy.arange(1.,md.timestepping.final_time)
 
 # time steps and resolution
@@ -70,5 +70,5 @@
 
 # 
-md.transient.requested_outputs=['default','SurfaceforcingsMonthlytemperatures']
+md.transient.requested_outputs=['default','SmbMonthlytemperatures']
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',3)
@@ -76,7 +76,7 @@
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMonthlytemperatures1','SurfaceforcingsMassBalance1',\
-		            'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMonthlytemperatures2','SurfaceforcingsMassBalance2',\
-				      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMonthlytemperatures3','SurfaceforcingsMassBalance3'];
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',\
+		            'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',\
+				      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'];
 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,\
@@ -90,6 +90,6 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMonthlytemperatures,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -99,6 +99,6 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMonthlytemperatures,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -108,5 +108,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMonthlytemperatures,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test237.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test237.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test237.m	(revision 19527)
@@ -7,7 +7,7 @@
 
 % Use of ispdd methods
-md.surfaceforcings = SMBpdd();
-md.surfaceforcings.isdelta18o=0;
-md.surfaceforcings.ismungsm=1;
+md.smb = SMBpdd();
+md.smb.isdelta18o=0;
+md.smb.ismungsm=1;
 
 % time steps and resolution
@@ -20,41 +20,41 @@
 tmonth(1:12)=238.15+20.;
 for imonth=0:11
-    md.surfaceforcings.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
-    md.surfaceforcings.temperatures_lgm(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1)-20.;
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+    md.smb.temperatures_lgm(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1)-20.;
     % Time for the last line:
-    md.surfaceforcings.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
-    md.surfaceforcings.temperatures_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.temperatures_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
 end
 
 % creating initialization and spc temperatures initialization and spc
-md.thermal.spctemperature=mean(md.surfaceforcings.temperatures_lgm(1:md.mesh.numberofvertices,1:12),2); %-10*ones(md.mesh.numberofvertices,1);
+md.thermal.spctemperature=mean(md.smb.temperatures_lgm(1:md.mesh.numberofvertices,1:12),2); %-10*ones(md.mesh.numberofvertices,1);
 md.thermal.spctemperature=repmat(md.thermal.spctemperature,1,md.timestepping.final_time/md.timestepping.time_step);
 itemp=0:md.timestepping.time_step:md.timestepping.final_time-md.timestepping.time_step;
 md.thermal.spctemperature(md.mesh.numberofvertices+1,:)=itemp;
 
-md.initialization.temperature=md.surfaceforcings.temperatures_lgm(1:md.mesh.numberofvertices,1); %*ones(md.mesh.numberofvertices,1);
-md.surfaceforcings = initialize(md.surfaceforcings,md);
+md.initialization.temperature=md.smb.temperatures_lgm(1:md.mesh.numberofvertices,1); %*ones(md.mesh.numberofvertices,1);
+md.smb = initialize(md.smb,md);
 
 % creating precipitation
 for imonth=0:11
-    md.surfaceforcings.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
-    md.surfaceforcings.precipitations_lgm(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    md.smb.precipitations_lgm(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
     % Time for the last line:
-    md.surfaceforcings.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
-    md.surfaceforcings.precipitations_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.precipitations_lgm(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
 end
 
 for iint=1:(md.timestepping.final_time/md.timestepping.time_step)+1
-    md.surfaceforcings.Pfac(1,iint)=0.15*iint;
-    md.surfaceforcings.Tdiff(1,iint)=0.15*iint;
-    md.surfaceforcings.sealev(1,iint)=0.15*iint;
+    md.smb.Pfac(1,iint)=0.15*iint;
+    md.smb.Tdiff(1,iint)=0.15*iint;
+    md.smb.sealev(1,iint)=0.15*iint;
     % Year of each data point
-    md.surfaceforcings.Pfac(2,iint)=(iint-1)*20;
-    md.surfaceforcings.Tdiff(2,iint)=(iint-1)*20;
-    md.surfaceforcings.sealev(2,iint)=(iint-1)*20;
+    md.smb.Pfac(2,iint)=(iint-1)*20;
+    md.smb.Tdiff(2,iint)=(iint-1)*20;
+    md.smb.sealev(2,iint)=(iint-1)*20;
 end
 
 %
-md.transient.requested_outputs={'default','SurfaceforcingsMonthlytemperatures'};
+md.transient.requested_outputs={'default','SmbMonthlytemperatures'};
 md=extrude(md,3,1);
 
@@ -64,7 +64,7 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','SurfaceforcingsMonthlytemperatures1','SurfaceforcingsMassBalance1',...
-						'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','SurfaceforcingsMonthlytemperatures2','SurfaceforcingsMassBalance2',...
-						'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','SurfaceforcingsMonthlytemperatures3','SurfaceforcingsMassBalance3'};
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','SmbMonthlytemperatures1','SmbMassBalance1',...
+						'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','SmbMonthlytemperatures2','SmbMassBalance2',...
+						'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','SmbMonthlytemperatures3','SmbMassBalance3'};
 field_tolerances={...
 	1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,1e-8,1e-8,1e-13,1e-8,1e-13,1e-13,...
@@ -82,6 +82,6 @@
 	(md.results.TransientSolution(1).Temperature),...
 	(md.results.TransientSolution(1).BasalforcingsGroundediceMeltingRate),...
-	(md.results.TransientSolution(1).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -94,6 +94,6 @@
 	(md.results.TransientSolution(2).Temperature),...
 	(md.results.TransientSolution(2).BasalforcingsGroundediceMeltingRate),...
-	(md.results.TransientSolution(2).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -106,5 +106,5 @@
 	(md.results.TransientSolution(3).Temperature),...
 	(md.results.TransientSolution(3).BasalforcingsGroundediceMeltingRate),...
-	(md.results.TransientSolution(3).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test237.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test237.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test237.py	(revision 19527)
@@ -16,7 +16,7 @@
 
 # Use of ispdd and isdelta18o methods
-md.surfaceforcings = SMBpdd();
-md.surfaceforcings.isdelta18o=0
-md.surfaceforcings.ismungsm=1
+md.smb = SMBpdd();
+md.smb.isdelta18o=0
+md.smb.ismungsm=1
 
 # time steps and resolution
@@ -28,47 +28,47 @@
 # Same temperature over the all region:
 tmonth=numpy.ones(12)*(238.15+20.)
-md.surfaceforcings.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
-md.surfaceforcings.temperatures_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.temperatures_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
 for imonth in xrange(0,12):
-    md.surfaceforcings.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
-    md.surfaceforcings.temperatures_lgm[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]-20.
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
+    md.smb.temperatures_lgm[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]-20.
     # Time for the last line:
-    md.surfaceforcings.temperatures_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
-    md.surfaceforcings.temperatures_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.temperatures_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.temperatures_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
 
 # creating initialization and spc temperatures initialization and spc
-md.thermal.spctemperature=numpy.mean(md.surfaceforcings.temperatures_lgm[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)    #-10*ones(md.mesh.numberofvertices,1)
+md.thermal.spctemperature=numpy.mean(md.smb.temperatures_lgm[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)    #-10*ones(md.mesh.numberofvertices,1)
 md.thermal.spctemperature=numpy.tile(md.thermal.spctemperature,(1,md.timestepping.final_time/md.timestepping.time_step))
 itemp=numpy.arange(0,md.timestepping.final_time,md.timestepping.time_step)
 md.thermal.spctemperature=numpy.vstack((md.thermal.spctemperature,itemp.reshape(1,-1)))
 
-md.initialization.temperature=md.surfaceforcings.temperatures_lgm[0:md.mesh.numberofvertices,0].reshape(-1,1)   #*ones(md.mesh.numberofvertices,1)
-md.surfaceforcings.initialize(md)
+md.initialization.temperature=md.smb.temperatures_lgm[0:md.mesh.numberofvertices,0].reshape(-1,1)   #*ones(md.mesh.numberofvertices,1)
+md.smb.initialize(md)
 
 # creating precipitation
-md.surfaceforcings.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
-md.surfaceforcings.precipitations_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.precipitations_lgm=numpy.zeros((md.mesh.numberofvertices+1,12))
 for imonth in xrange(0,12):
-    md.surfaceforcings.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
-    md.surfaceforcings.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
-    md.surfaceforcings.precipitations_lgm[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
-    md.surfaceforcings.precipitations_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.precipitations_lgm[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_lgm[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
 
 fsize=int(md.timestepping.final_time/md.timestepping.time_step)+2
-md.surfaceforcings.Pfac=numpy.zeros((2,fsize))
-md.surfaceforcings.Tdiff=numpy.zeros((2,fsize))
-md.surfaceforcings.sealev=numpy.zeros((2,fsize))
+md.smb.Pfac=numpy.zeros((2,fsize))
+md.smb.Tdiff=numpy.zeros((2,fsize))
+md.smb.sealev=numpy.zeros((2,fsize))
 for iint in xrange(0,fsize):
     # Interpolation factors
-	 md.surfaceforcings.Pfac[0,iint]=0.15*(iint+1)
-	 md.surfaceforcings.Tdiff[0,iint]=0.15*(iint+1)
-	 md.surfaceforcings.sealev[0,iint]=0.15*(iint+1)
+	 md.smb.Pfac[0,iint]=0.15*(iint+1)
+	 md.smb.Tdiff[0,iint]=0.15*(iint+1)
+	 md.smb.sealev[0,iint]=0.15*(iint+1)
 	 # Year of each data point
-	 md.surfaceforcings.Pfac[1,iint]=(float(iint))*20
-	 md.surfaceforcings.Tdiff[1,iint]=(float(iint))*20
-	 md.surfaceforcings.sealev[1,iint]=(float(iint))*20
+	 md.smb.Pfac[1,iint]=(float(iint))*20
+	 md.smb.Tdiff[1,iint]=(float(iint))*20
+	 md.smb.sealev[1,iint]=(float(iint))*20
 
 #
-md.transient.requested_outputs=['default','SurfaceforcingsMonthlytemperatures']
+md.transient.requested_outputs=['default','SmbMonthlytemperatures']
 md.extrude(3,1.)
 md=setflowequation(md,'SSA','all')
@@ -77,7 +77,7 @@
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','SurfaceforcingsMonthlytemperatures1','SurfaceforcingsMassBalance1',\
-		'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','SurfaceforcingsMonthlytemperatures2','SurfaceforcingsMassBalance2',\
-		'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','SurfaceforcingsMonthlytemperatures3','SurfaceforcingsMassBalance3'];
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','Temperature1','BasalforcingsGroundediceMeltingRate1','SmbMonthlytemperatures1','SmbMassBalance1',\
+		'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','Temperature2','BasalforcingsGroundediceMeltingRate2','SmbMonthlytemperatures2','SmbMassBalance2',\
+		'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','Temperature3','BasalforcingsGroundediceMeltingRate3','SmbMonthlytemperatures3','SmbMassBalance3'];
 field_tolerances=[1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,1e-8,1e-8,1e-13,1e-8,1e-13,1e-13,\
 		1e-13,1e-13,1e-13,1e-13,1e-13,1e-8,1e-8,1e-8,1e-13,1e-8,1e-13,1e-13,\
@@ -94,6 +94,6 @@
 	md.results.TransientSolution[0].Temperature,\
 	md.results.TransientSolution[0].BasalforcingsGroundediceMeltingRate,\
-	md.results.TransientSolution[0].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMonthlytemperatures,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -106,6 +106,6 @@
 	md.results.TransientSolution[1].Temperature,\
 	md.results.TransientSolution[1].BasalforcingsGroundediceMeltingRate,\
-	md.results.TransientSolution[1].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMonthlytemperatures,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -118,5 +118,5 @@
 	md.results.TransientSolution[2].Temperature,\
 	md.results.TransientSolution[2].BasalforcingsGroundediceMeltingRate,\
-	md.results.TransientSolution[2].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMonthlytemperatures,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test238.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test238.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test238.m	(revision 19527)
@@ -7,13 +7,13 @@
 
 % Use of ispdd and isdelta18o methods
-md.surfaceforcings = SMBd18opdd();
-md.surfaceforcings.isd18opd=1;
-%md.surfaceforcings.precipitation(1:md.mesh.numberofvertices,1:12)=0;
-%md.surfaceforcings.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+%md.smb.precipitation(1:md.mesh.numberofvertices,1:12)=0;
+%md.smb.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
 
 % Add temperature, precipitation and delta18o needed to measure the surface mass balance
 %  creating delta18o
 load '../Data/delta18o.data'
-md.surfaceforcings.delta18o=delta18o;
+md.smb.delta18o=delta18o;
 
 % creating Present day  temperatures
@@ -21,21 +21,21 @@
 tmonth(1:12)=238.15+20.;
 for imonth=0:11
-    md.surfaceforcings.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
     % Time for the last line:
-    md.surfaceforcings.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
 end
 
 % creating initialization and spc temperatures initialization and
 % spc
-md.thermal.spctemperature=mean(md.surfaceforcings.temperatures_presentday(1:md.mesh.numberofvertices,1:12),2)-10; %-10*ones(md.mesh.numberofvertices,1);
-md.initialization.temperature=md.thermal.spctemperature; %md.surfaceforcings.temperatures_presentday(1:md.mesh.numberofvertices,1);
+md.thermal.spctemperature=mean(md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1:12),2)-10; %-10*ones(md.mesh.numberofvertices,1);
+md.initialization.temperature=md.thermal.spctemperature; %md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1);
 
 % creating precipitation
 for imonth=0:11
-    md.surfaceforcings.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
     % Time for the last line:
-    md.surfaceforcings.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
 end
-md.surfaceforcings = initialize(md.surfaceforcings,md);
+md.smb = initialize(md.smb,md);
 
 % time steps and resolution
@@ -45,5 +45,5 @@
 
 % 
-md.transient.requested_outputs={'default','SurfaceforcingsMonthlytemperatures'};
+md.transient.requested_outputs={'default','SmbMonthlytemperatures'};
 md=setflowequation(md,'SSA','all');
 md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
@@ -51,7 +51,7 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMonthlytemperatures1','SurfaceforcingsMassBalance1',...
-	      'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMonthlytemperatures2','SurfaceforcingsMassBalance2',...
-	      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMonthlytemperatures3','SurfaceforcingsMassBalance3'};
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',...
+	      'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',...
+	      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'};
 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,...
@@ -65,6 +65,6 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -74,6 +74,6 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -83,5 +83,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test238.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test238.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test238.py	(revision 19527)
@@ -15,32 +15,32 @@
 
 # Use of ispdd and isdelta18o methods
-md.surfaceforcings = SMBd18opdd();
-md.surfaceforcings.isd18opd=1;
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
 
 # Add temperature, precipitation and delta18o needed to measure the surface mass balance
 # creating delta18o
 delta18o=numpy.loadtxt('../Data/delta18o.data')
-md.surfaceforcings.delta18o=delta18o
+md.smb.delta18o=delta18o
 
 # creating Present day temperatures
 # Same temperature over the all region:
 tmonth=numpy.ones(12)*(238.15+20.)
-md.surfaceforcings.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
 for imonth in xrange(0,12):
-    md.surfaceforcings.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
     # Time for the last line:
-    md.surfaceforcings.temperatures_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.temperatures_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
 
 # creating initialization and spc temperatures initialization and spc
-md.thermal.spctemperature=numpy.mean(md.surfaceforcings.temperatures_presentday[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)
+md.thermal.spctemperature=numpy.mean(md.smb.temperatures_presentday[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)
 md.thermal.spctemperature=md.thermal.spctemperature-10
 md.initialization.temperature=md.thermal.spctemperature
-md.surfaceforcings.initialize(md)
+md.smb.initialize(md)
 
 # creating precipitation
-md.surfaceforcings.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
 for imonth in xrange(0,12):
-    md.surfaceforcings.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
-    md.surfaceforcings.precipitations_presentday[md.mesh.numberofvertices,imonth]=(float(imonth)/12.)
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_presentday[md.mesh.numberofvertices,imonth]=(float(imonth)/12.)
 
 # time steps and resolution
@@ -50,5 +50,5 @@
 
 # 
-md.transient.requested_outputs=['default','SurfaceforcingsMonthlytemperatures']
+md.transient.requested_outputs=['default','SmbMonthlytemperatures']
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',3)
@@ -56,7 +56,7 @@
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMonthlytemperatures1','SurfaceforcingsMassBalance1',\
-		            'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMonthlytemperatures2','SurfaceforcingsMassBalance2',\
-				      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMonthlytemperatures3','SurfaceforcingsMassBalance3'];
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',\
+		            'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',\
+				      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'];
 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,\
@@ -70,6 +70,6 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMonthlytemperatures,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -79,6 +79,6 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMonthlytemperatures,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -88,5 +88,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMonthlytemperatures,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test239.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test239.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test239.m	(revision 19527)
@@ -7,13 +7,13 @@
 
 % Use of ispdd and isdelta18o methods
-md.surfaceforcings = SMBd18opdd();
-md.surfaceforcings.isd18opd=1;
-%md.surfaceforcings.precipitation(1:md.mesh.numberofvertices,1:12)=0;
-%md.surfaceforcings.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+%md.smb.precipitation(1:md.mesh.numberofvertices,1:12)=0;
+%md.smb.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
 
 % Add temperature, precipitation and delta18o needed to measure the surface mass balance
 %  creating delta18o
 load '../Data/delta18o.data'
-md.surfaceforcings.delta18o=delta18o;
+md.smb.delta18o=delta18o;
 
 % creating Present day  temperatures
@@ -21,22 +21,22 @@
 tmonth(1:12)=238.15+20.;
 for imonth=0:11
-    md.surfaceforcings.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
     % Time for the last line:
-    md.surfaceforcings.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
 end
 
 % creating initialization and spc temperatures initialization and
 % spc
-md.thermal.spctemperature=mean(md.surfaceforcings.temperatures_presentday(1:md.mesh.numberofvertices,1:12),2)-10; %-10*ones(md.mesh.numberofvertices,1);
+md.thermal.spctemperature=mean(md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1:12),2)-10; %-10*ones(md.mesh.numberofvertices,1);
 
-md.initialization.temperature=md.thermal.spctemperature; %md.surfaceforcings.temperatures_presentday(1:md.mesh.numberofvertices,1);
+md.initialization.temperature=md.thermal.spctemperature; %md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1);
 
 % creating precipitation
 for imonth=0:11
-    md.surfaceforcings.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
     % Time for the last line:
-    md.surfaceforcings.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
 end
-md.surfaceforcings = initialize(md.surfaceforcings,md);
+md.smb = initialize(md.smb,md);
 
 % time steps and resolution
@@ -46,5 +46,5 @@
 
 % 
-md.transient.requested_outputs={'default','SurfaceforcingsMonthlytemperatures'};
+md.transient.requested_outputs={'default','SmbMonthlytemperatures'};
 md=setflowequation(md,'SSA','all');
 md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
@@ -52,7 +52,7 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMonthlytemperatures1','SurfaceforcingsMassBalance1',...
-	      'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMonthlytemperatures2','SurfaceforcingsMassBalance2',...
-	      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMonthlytemperatures3','SurfaceforcingsMassBalance3'};
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',...
+	      'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',...
+	      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'};
 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,...
@@ -66,6 +66,6 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -75,6 +75,6 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -84,5 +84,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test239.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test239.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test239.py	(revision 19527)
@@ -15,32 +15,32 @@
 
 # Use of ispdd and isdelta18o methods
-md.surfaceforcings = SMBd18opdd();
-md.surfaceforcings.isd18opd=1;
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
 
 # Add temperature, precipitation and delta18o needed to measure the surface mass balance
 # creating delta18o
 delta18o=numpy.loadtxt('../Data/delta18o.data')
-md.surfaceforcings.delta18o=delta18o
+md.smb.delta18o=delta18o
 
 # creating Present day temperatures
 # Same temperature over the all region:
 tmonth=numpy.ones(12)*(238.15+20.)
-md.surfaceforcings.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
 for imonth in xrange(0,12):
-    md.surfaceforcings.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
     # Time for the last line:
-    md.surfaceforcings.temperatures_presentday[md.mesh.numberofvertices,imonth]=(float(imonth)/12.)
+    md.smb.temperatures_presentday[md.mesh.numberofvertices,imonth]=(float(imonth)/12.)
 
 # creating initialization and spc temperatures initialization and spc
-md.thermal.spctemperature=numpy.mean(md.surfaceforcings.temperatures_presentday[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)
+md.thermal.spctemperature=numpy.mean(md.smb.temperatures_presentday[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)
 md.thermal.spctemperature=md.thermal.spctemperature-10
 md.initialization.temperature=md.thermal.spctemperature
-md.surfaceforcings.initialize(md)
+md.smb.initialize(md)
 
 # creating precipitation
-md.surfaceforcings.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
 for imonth in xrange(0,12):
-    md.surfaceforcings.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
-    md.surfaceforcings.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
 
 # time steps and resolution
@@ -50,5 +50,5 @@
 
 # 
-md.transient.requested_outputs=['default','SurfaceforcingsMonthlytemperatures']
+md.transient.requested_outputs=['default','SmbMonthlytemperatures']
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',3)
@@ -56,7 +56,7 @@
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMonthlytemperatures1','SurfaceforcingsMassBalance1',\
-		            'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMonthlytemperatures2','SurfaceforcingsMassBalance2',\
-				      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMonthlytemperatures3','SurfaceforcingsMassBalance3'];
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',\
+		            'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',\
+				      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'];
 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,\
@@ -70,6 +70,6 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMonthlytemperatures,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -79,6 +79,6 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMonthlytemperatures,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -88,5 +88,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMonthlytemperatures,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test240.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test240.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test240.m	(revision 19527)
@@ -7,13 +7,13 @@
 
 % Use of ispdd and isdelta18o methods
-md.surfaceforcings = SMBd18opdd();
-md.surfaceforcings.isd18opd=1;
-%md.surfaceforcings.precipitation(1:md.mesh.numberofvertices,1:12)=0;
-%md.surfaceforcings.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
+%md.smb.precipitation(1:md.mesh.numberofvertices,1:12)=0;
+%md.smb.monthlytemperatures(1:md.mesh.numberofvertices,1:12)=273;
 
 % Add temperature, precipitation and delta18o needed to measure the surface mass balance
 %  creating delta18o
 load '../Data/delta18o.data'
-md.surfaceforcings.delta18o=delta18o;
+md.smb.delta18o=delta18o;
 
 % creating Present day  temperatures
@@ -21,20 +21,20 @@
 tmonth(1:12)=238.15+20.;
 for imonth=0:11
-    md.surfaceforcings.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
+    md.smb.temperatures_presentday(1:md.mesh.numberofvertices,imonth+1)=tmonth(imonth+1);
     % Time for the last line:
-    md.surfaceforcings.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.temperatures_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
 end
-md.surfaceforcings = initialize(md.surfaceforcings,md);
+md.smb = initialize(md.smb,md);
 
 % creating initialization and spc temperatures initialization and
 % spc
-md.thermal.spctemperature=mean(md.surfaceforcings.temperatures_presentday(1:md.mesh.numberofvertices,1:12),2)-10; %-10*ones(md.mesh.numberofvertices,1);
-md.initialization.temperature=md.thermal.spctemperature; %md.surfaceforcings.temperatures_presentday(1:md.mesh.numberofvertices,1);
+md.thermal.spctemperature=mean(md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1:12),2)-10; %-10*ones(md.mesh.numberofvertices,1);
+md.initialization.temperature=md.thermal.spctemperature; %md.smb.temperatures_presentday(1:md.mesh.numberofvertices,1);
 
 % creating precipitation
 for imonth=0:11
-    md.surfaceforcings.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
+    md.smb.precipitations_presentday(1:md.mesh.numberofvertices,imonth+1)=-0.4*10^(-6)*md.mesh.y+0.5;
     % Time for the last line:
-    md.surfaceforcings.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
+    md.smb.precipitations_presentday(md.mesh.numberofvertices+1,imonth+1)=((imonth+1)/12);
 end
 
@@ -46,5 +46,5 @@
 
 % 
-md.transient.requested_outputs={'default','SurfaceforcingsMonthlytemperatures'};
+md.transient.requested_outputs={'default','SmbMonthlytemperatures'};
 md=setflowequation(md,'SSA','all');
 md.cluster=generic('name',oshostname(),'np',1); % 3 for the cluster
@@ -52,7 +52,7 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMonthlytemperatures1','SurfaceforcingsMassBalance1',...
-	      'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMonthlytemperatures2','SurfaceforcingsMassBalance2',...
-	      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMonthlytemperatures3','SurfaceforcingsMassBalance3'};
+field_names     ={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',...
+	      'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',...
+	      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'};
 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,...
@@ -66,6 +66,6 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -75,6 +75,6 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -84,5 +84,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMonthlytemperatures),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMonthlytemperatures),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test240.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test240.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test240.py	(revision 19527)
@@ -15,32 +15,32 @@
 
 # Use of ispdd and isdelta18o methods
-md.surfaceforcings = SMBd18opdd();
-md.surfaceforcings.isd18opd=1;
+md.smb = SMBd18opdd();
+md.smb.isd18opd=1;
 
 # Add temperature, precipitation and delta18o needed to measure the surface mass balance
 # creating delta18o
 delta18o=numpy.loadtxt('../Data/delta18o.data')
-md.surfaceforcings.delta18o=delta18o
+md.smb.delta18o=delta18o
 
 # creating Present day temperatures
 # Same temperature over the all region:
 tmonth=numpy.ones(12)*(238.15+20.)
-md.surfaceforcings.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.temperatures_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
 for imonth in xrange(0,12):
-    md.surfaceforcings.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
+    md.smb.temperatures_presentday[0:md.mesh.numberofvertices,imonth]=tmonth[imonth]
     # Time for the last line:
-    md.surfaceforcings.temperatures_presentday[md.mesh.numberofvertices,imonth]=(float(imonth)/12.)
+    md.smb.temperatures_presentday[md.mesh.numberofvertices,imonth]=(float(imonth)/12.)
 
 # creating initialization and spc temperatures initialization and spc
-md.thermal.spctemperature=numpy.mean(md.surfaceforcings.temperatures_presentday[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)
+md.thermal.spctemperature=numpy.mean(md.smb.temperatures_presentday[0:md.mesh.numberofvertices,:],axis=1).reshape(-1,1)
 md.thermal.spctemperature=md.thermal.spctemperature-10
 md.initialization.temperature=md.thermal.spctemperature
-md.surfaceforcings.initialize(md)
+md.smb.initialize(md)
 
 # creating precipitation
-md.surfaceforcings.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
+md.smb.precipitations_presentday=numpy.zeros((md.mesh.numberofvertices+1,12))
 for imonth in xrange(0,12):
-    md.surfaceforcings.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
-    md.surfaceforcings.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
+    md.smb.precipitations_presentday[0:md.mesh.numberofvertices,imonth]=-0.4*10**(-6)*md.mesh.y+0.5
+    md.smb.precipitations_presentday[md.mesh.numberofvertices,imonth]=((float(imonth)+1.)/12.)
 
 # time steps and resolution
@@ -51,5 +51,5 @@
 
 # 
-md.transient.requested_outputs=['default','SurfaceforcingsMonthlytemperatures']
+md.transient.requested_outputs=['default','SmbMonthlytemperatures']
 md=setflowequation(md,'SSA','all')
 md.cluster=generic('name',oshostname(),'np',3)
@@ -57,7 +57,7 @@
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMonthlytemperatures1','SurfaceforcingsMassBalance1',\
-		            'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMonthlytemperatures2','SurfaceforcingsMassBalance2',\
-				      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMonthlytemperatures3','SurfaceforcingsMassBalance3'];
+field_names     =['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMonthlytemperatures1','SmbMassBalance1',\
+		            'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMonthlytemperatures2','SmbMassBalance2',\
+				      'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMonthlytemperatures3','SmbMassBalance3'];
 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,\
@@ -71,6 +71,6 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMonthlytemperatures,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -80,6 +80,6 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMonthlytemperatures,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -89,5 +89,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMonthlytemperatures,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMonthlytemperatures,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test241.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test241.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test241.m	(revision 19527)
@@ -15,6 +15,6 @@
 smb=[ smb smb*-1. ];
 
-md.surfaceforcings.mass_balance=smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.5 3.];
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
 md.transient.isthermal=0;
 
@@ -22,8 +22,8 @@
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4'};
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
 field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
@@ -38,5 +38,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -46,5 +46,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -54,5 +54,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -62,4 +62,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test241.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test241.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test241.py	(revision 19527)
@@ -25,5 +25,5 @@
 smb=numpy.hstack((smb,smb*-1.))
 
-md.surfaceforcings.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
 md.transient.isthermal=False
 
@@ -31,8 +31,8 @@
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4']
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
 field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
@@ -47,5 +47,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -55,5 +55,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -63,5 +63,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -71,4 +71,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test242.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test242.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test242.m	(revision 19527)
@@ -16,6 +16,6 @@
 smb=[ smb smb*-1. ];
 
-md.surfaceforcings.mass_balance=smb;
-md.surfaceforcings.mass_balance(end+1,:)=[1.5 3.];
+md.smb.mass_balance=smb;
+md.smb.mass_balance(end+1,:)=[1.5 3.];
 md.transient.isthermal=0;
 
@@ -23,8 +23,8 @@
 
 %Fields and tolerances to track changes
-field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassbalance4'};
+field_names     ={'Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4'};
 field_tolerances={...
 	1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,...
@@ -41,5 +41,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -50,5 +50,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -59,5 +59,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -68,4 +68,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test242.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test242.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test242.py	(revision 19527)
@@ -26,5 +26,5 @@
 smb=numpy.hstack((smb,smb*-1.))
 
-md.surfaceforcings.mass_balance=numpy.vstack((smb,[1.5,3.]))
+md.smb.mass_balance=numpy.vstack((smb,[1.5,3.]))
 md.transient.isthermal=False
 
@@ -32,8 +32,8 @@
 
 #Fields and tolerances to track changes
-field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassbalance4']
+field_names     =['Vx1','Vy1','Vz1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vz2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vz3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vz4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassbalance4']
 field_tolerances=[\
 		1e-09,1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-13,\
@@ -50,5 +50,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -59,5 +59,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -68,5 +68,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -77,4 +77,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test3009.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3009.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test3009.m	(revision 19527)
@@ -8,4 +8,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=0;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk-jpl/test/NightlyRun/test3009.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3009.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test3009.py	(revision 19527)
@@ -17,4 +17,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=False
 md.transient.isthermal=True
 md.transient.isgroundingline=False
Index: /issm/trunk-jpl/test/NightlyRun/test3109.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3109.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test3109.m	(revision 19527)
@@ -8,4 +8,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=0;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk-jpl/test/NightlyRun/test3109.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test3109.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test3109.py	(revision 19527)
@@ -17,4 +17,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=False
 md.transient.isthermal=True
 md.transient.isgroundingline=False
Index: /issm/trunk-jpl/test/NightlyRun/test313.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test313.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test313.m	(revision 19527)
@@ -9,4 +9,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=0;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk-jpl/test/NightlyRun/test313.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test313.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test313.py	(revision 19527)
@@ -18,4 +18,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=False
 md.transient.isthermal=True
 md.transient.isgroundingline=False
Index: /issm/trunk-jpl/test/NightlyRun/test326.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test326.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test326.m	(revision 19527)
@@ -10,4 +10,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=0;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk-jpl/test/NightlyRun/test326.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test326.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test326.py	(revision 19527)
@@ -20,4 +20,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=False
 md.transient.isthermal=True
 md.transient.isgroundingline=False
Index: /issm/trunk-jpl/test/NightlyRun/test328.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test328.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test328.m	(revision 19527)
@@ -4,9 +4,9 @@
 md=parameterize(md,'../Par/SquareSheetConstrained.par');
 md=setflowequation(md,'SSA','all');
-md.surfaceforcings = SMBgradients();
-md.surfaceforcings.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y;
-md.surfaceforcings.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y;
-md.surfaceforcings.href=md.geometry.surface;
-md.surfaceforcings.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+md.smb = SMBgradients();
+md.smb.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y;
+md.smb.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y;
+md.smb.href=md.geometry.surface;
+md.smb.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
 md.transient.requested_outputs={'default','TotalSmb'};
 md.cluster=generic('name',oshostname(),'np',3);
@@ -23,5 +23,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(1).TotalSmb),...
 	(md.results.TransientSolution(2).Vx),...
@@ -32,5 +32,5 @@
 	(md.results.TransientSolution(2).Thickness),...
 	(md.results.TransientSolution(2).TotalSmb),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -39,5 +39,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(3).TotalSmb),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test328.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test328.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test328.py	(revision 19527)
@@ -15,10 +15,10 @@
 md=parameterize(md,'../Par/SquareSheetConstrained.py')
 md=setflowequation(md,'SSA','all')
-md.surfaceforcings = SMBgradients();
-md.surfaceforcings.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y
-md.surfaceforcings.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y
+md.smb = SMBgradients();
+md.smb.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y
+md.smb.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y
 md.transient.requested_outputs=['default','TotalSmb']
-md.surfaceforcings.href=copy.deepcopy(md.geometry.surface).reshape(-1)
-md.surfaceforcings.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+md.smb.href=copy.deepcopy(md.geometry.surface).reshape(-1)
+md.smb.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
 md.cluster=generic('name',oshostname(),'np',3)
 md=solve(md,TransientSolutionEnum())
@@ -34,5 +34,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[0].TotalSmb,\
 	md.results.TransientSolution[1].Vx,\
@@ -43,5 +43,5 @@
 	md.results.TransientSolution[1].Thickness,\
 	md.results.TransientSolution[1].TotalSmb,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -50,5 +50,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[2].TotalSmb,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test329.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test329.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test329.m	(revision 19527)
@@ -5,9 +5,9 @@
 md=extrude(md,3,1.);
 md=setflowequation(md,'HO','all');
-md.surfaceforcings = SMBgradients();
-md.surfaceforcings.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y;
-md.surfaceforcings.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y;
-md.surfaceforcings.href=md.geometry.surface;
-md.surfaceforcings.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+md.smb = SMBgradients();
+md.smb.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y;
+md.smb.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y;
+md.smb.href=md.geometry.surface;
+md.smb.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
 md.transient.requested_outputs={'default','TotalSmb'};
 md.cluster=generic('name',oshostname(),'np',3);
@@ -28,5 +28,5 @@
 	(md.results.TransientSolution(1).Thickness),...
 	(md.results.TransientSolution(1).Temperature),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(1).TotalSmb),...
 	(md.results.TransientSolution(2).Vx),...
@@ -38,5 +38,5 @@
 	(md.results.TransientSolution(2).Thickness),...
 	(md.results.TransientSolution(2).Temperature),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(2).TotalSmb),...
 	(md.results.TransientSolution(3).Vx),...
@@ -48,5 +48,5 @@
 	(md.results.TransientSolution(3).Thickness),...
 	(md.results.TransientSolution(3).Temperature),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(3).TotalSmb),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test329.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test329.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test329.py	(revision 19527)
@@ -16,9 +16,9 @@
 md.extrude(3,1)
 md=setflowequation(md,'HO','all')
-md.surfaceforcings = SMBgradients();
-md.surfaceforcings.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y
-md.surfaceforcings.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y
-md.surfaceforcings.href=copy.deepcopy(md.geometry.surface).reshape(-1)
-md.surfaceforcings.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
+md.smb = SMBgradients();
+md.smb.b_pos=-100. + 0.00005*md.mesh.x - 0.0001*md.mesh.y
+md.smb.b_neg=250. + 0.000051*md.mesh.x - 0.00011*md.mesh.y
+md.smb.href=copy.deepcopy(md.geometry.surface).reshape(-1)
+md.smb.smbref= 1000. - 0.001*md.mesh.x - 0.005*md.mesh.y;
 md.transient.requested_outputs=['default','TotalSmb']
 md.cluster=generic('name',oshostname(),'np',3)
@@ -39,5 +39,5 @@
 	md.results.TransientSolution[0].Thickness,\
 	md.results.TransientSolution[0].Temperature,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[0].TotalSmb,\
 	md.results.TransientSolution[1].Vx,\
@@ -49,5 +49,5 @@
 	md.results.TransientSolution[1].Thickness,\
 	md.results.TransientSolution[1].Temperature,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[1].TotalSmb,\
 	md.results.TransientSolution[2].Vx,\
@@ -59,5 +59,5 @@
 	md.results.TransientSolution[2].Thickness,\
 	md.results.TransientSolution[2].Temperature,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[2].TotalSmb,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test336.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test336.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test336.m	(revision 19527)
@@ -14,8 +14,8 @@
 smb=[ smb smb*-1. ];
 
-md.surfaceforcings=SMBcomponents();
-md.surfaceforcings.accumulation=[smb*2; [1.5 3.]];
-md.surfaceforcings.runoff=[smb/2; [1.5 3.]];
-md.surfaceforcings.evaporation=[smb/2; [1.5 3.]];
+md.smb=SMBcomponents();
+md.smb.accumulation=[smb*2; [1.5 3.]];
+md.smb.runoff=[smb/2; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
 md.transient.isthermal=0;
 
@@ -23,8 +23,8 @@
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4'};
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
 field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
@@ -39,5 +39,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -47,5 +47,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -55,5 +55,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -63,4 +63,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test336.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test336.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test336.py	(revision 19527)
@@ -24,8 +24,8 @@
 smb=numpy.hstack((smb,smb*-1.))
 
-md.surfaceforcings=SMBcomponents();
-md.surfaceforcings.accumulation=numpy.vstack((smb*2, [1.5,3.]));
-md.surfaceforcings.runoff=numpy.vstack((smb/2, [1.5,3.]));
-md.surfaceforcings.evaporation=numpy.vstack((smb/2, [1.5,3.]));
+md.smb=SMBcomponents();
+md.smb.accumulation=numpy.vstack((smb*2, [1.5,3.]));
+md.smb.runoff=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.evaporation=numpy.vstack((smb/2, [1.5,3.]));
 md.transient.isthermal=False
 
@@ -33,8 +33,8 @@
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4']
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
 field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
@@ -49,5 +49,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -57,5 +57,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -65,5 +65,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -73,4 +73,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test337.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test337.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test337.m	(revision 19527)
@@ -15,8 +15,8 @@
 smb=[ smb smb*-1. ];
 
-md.surfaceforcings=SMBcomponents();
-md.surfaceforcings.accumulation=[smb*2; [1.5 3.]];
-md.surfaceforcings.runoff=[smb/2; [1.5 3.]];
-md.surfaceforcings.evaporation=[smb/2; [1.5 3.]];
+md.smb=SMBcomponents();
+md.smb.accumulation=[smb*2; [1.5 3.]];
+md.smb.runoff=[smb/2; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
 md.transient.isthermal=0;
 
@@ -24,8 +24,8 @@
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4'};
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
 field_tolerances={...
 	5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
@@ -41,5 +41,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -49,5 +49,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -57,5 +57,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -65,4 +65,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test337.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test337.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test337.py	(revision 19527)
@@ -25,8 +25,8 @@
 smb=numpy.hstack((smb,smb*-1.))
 
-md.surfaceforcings=SMBcomponents();
-md.surfaceforcings.accumulation=numpy.vstack((smb*2, [1.5,3.]));
-md.surfaceforcings.runoff=numpy.vstack((smb/2, [1.5,3.]));
-md.surfaceforcings.evaporation=numpy.vstack((smb/2, [1.5,3.]));
+md.smb=SMBcomponents();
+md.smb.accumulation=numpy.vstack((smb*2, [1.5,3.]));
+md.smb.runoff=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.evaporation=numpy.vstack((smb/2, [1.5,3.]));
 md.transient.isthermal=False
 
@@ -34,8 +34,8 @@
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4']
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
 field_tolerances=[\
 		5e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
@@ -51,5 +51,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -59,5 +59,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -67,5 +67,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -75,4 +75,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test338.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test338.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test338.m	(revision 19527)
@@ -14,9 +14,9 @@
 smb=[ smb smb*-1. ];
 
-md.surfaceforcings=SMBmeltcomponents();
-md.surfaceforcings.accumulation=[smb; [1.5 3.]];
-md.surfaceforcings.melt=[smb/2; [1.5 3.]];
-md.surfaceforcings.refreeze=[smb; [1.5 3.]];
-md.surfaceforcings.evaporation=[smb/2; [1.5 3.]];
+md.smb=SMBmeltcomponents();
+md.smb.accumulation=[smb; [1.5 3.]];
+md.smb.melt=[smb/2; [1.5 3.]];
+md.smb.refreeze=[smb; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
 md.transient.isthermal=0;
 
@@ -24,8 +24,8 @@
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4'};
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
 field_tolerances={1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,...
@@ -40,5 +40,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -48,5 +48,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -56,5 +56,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -64,4 +64,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test338.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test338.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test338.py	(revision 19527)
@@ -24,9 +24,9 @@
 smb=numpy.hstack((smb,smb*-1.))
 
-md.surfaceforcings=SMBmeltcomponents();
-md.surfaceforcings.accumulation=numpy.vstack((smb, [1.5,3.]));
-md.surfaceforcings.evaporation=numpy.vstack((smb/2, [1.5,3.]));
-md.surfaceforcings.melt=numpy.vstack((smb/2, [1.5,3.]));
-md.surfaceforcings.refreeze=numpy.vstack((smb, [1.5,3.]));
+md.smb=SMBmeltcomponents();
+md.smb.accumulation=numpy.vstack((smb, [1.5,3.]));
+md.smb.evaporation=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.melt=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.refreeze=numpy.vstack((smb, [1.5,3.]));
 md.transient.isthermal=False
 
@@ -34,8 +34,8 @@
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4']
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
 field_tolerances=[1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
 	1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,1e-10,\
@@ -50,5 +50,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -58,5 +58,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -66,5 +66,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -74,4 +74,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test339.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test339.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test339.m	(revision 19527)
@@ -15,9 +15,9 @@
 smb=[ smb smb*-1. ];
 
-md.surfaceforcings=SMBmeltcomponents();
-md.surfaceforcings.accumulation=[smb; [1.5 3.]];
-md.surfaceforcings.melt=[smb/2; [1.5 3.]];
-md.surfaceforcings.refreeze=[smb; [1.5 3.]];
-md.surfaceforcings.evaporation=[smb/2; [1.5 3.]];
+md.smb=SMBmeltcomponents();
+md.smb.accumulation=[smb; [1.5 3.]];
+md.smb.melt=[smb/2; [1.5 3.]];
+md.smb.refreeze=[smb; [1.5 3.]];
+md.smb.evaporation=[smb/2; [1.5 3.]];
 md.transient.isthermal=0;
 
@@ -25,8 +25,8 @@
 
 %Fields and tolerances to track changes
-field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', ...
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', ...
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', ...
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4'};
+field_names={'Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', ...
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', ...
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', ...
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4'};
 field_tolerances={...
 	1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,...
@@ -42,5 +42,5 @@
 	(md.results.TransientSolution(1).Surface),...
 	(md.results.TransientSolution(1).Thickness),...
-	(md.results.TransientSolution(1).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(1).SmbMassBalance),...
 	(md.results.TransientSolution(2).Vx),...
 	(md.results.TransientSolution(2).Vy),...
@@ -50,5 +50,5 @@
 	(md.results.TransientSolution(2).Surface),...
 	(md.results.TransientSolution(2).Thickness),...
-	(md.results.TransientSolution(2).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(2).SmbMassBalance),...
 	(md.results.TransientSolution(3).Vx),...
 	(md.results.TransientSolution(3).Vy),...
@@ -58,5 +58,5 @@
 	(md.results.TransientSolution(3).Surface),...
 	(md.results.TransientSolution(3).Thickness),...
-	(md.results.TransientSolution(3).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(3).SmbMassBalance),...
 	(md.results.TransientSolution(4).Vx),...
 	(md.results.TransientSolution(4).Vy),...
@@ -66,4 +66,4 @@
 	(md.results.TransientSolution(4).Surface),...
 	(md.results.TransientSolution(4).Thickness),...
-	(md.results.TransientSolution(4).SurfaceforcingsMassBalance),...
+	(md.results.TransientSolution(4).SmbMassBalance),...
 	};
Index: /issm/trunk-jpl/test/NightlyRun/test339.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test339.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test339.py	(revision 19527)
@@ -25,9 +25,9 @@
 smb=numpy.hstack((smb,smb*-1.))
 
-md.surfaceforcings=SMBmeltcomponents();
-md.surfaceforcings.accumulation=numpy.vstack((smb, [1.5,3.]));
-md.surfaceforcings.evaporation=numpy.vstack((smb/2, [1.5,3.]));
-md.surfaceforcings.melt=numpy.vstack((smb/2, [1.5,3.]));
-md.surfaceforcings.refreeze=numpy.vstack((smb, [1.5,3.]));
+md.smb=SMBmeltcomponents();
+md.smb.accumulation=numpy.vstack((smb, [1.5,3.]));
+md.smb.evaporation=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.melt=numpy.vstack((smb/2, [1.5,3.]));
+md.smb.refreeze=numpy.vstack((smb, [1.5,3.]));
 md.transient.isthermal=False
 
@@ -35,8 +35,8 @@
 
 #Fields and tolerances to track changes
-field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SurfaceforcingsMassBalance1', \
-	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SurfaceforcingsMassBalance2', \
-	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SurfaceforcingsMassBalance3', \
-	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SurfaceforcingsMassBalance4']
+field_names=['Vx1','Vy1','Vel1','Pressure1','Bed1','Surface1','Thickness1','SmbMassBalance1', \
+	'Vx2','Vy2','Vel2','Pressure2','Bed2','Surface2','Thickness2','SmbMassBalance2', \
+	'Vx3','Vy3','Vel3','Pressure3','Bed3','Surface3','Thickness3','SmbMassBalance3', \
+	'Vx4','Vy4','Vel4','Pressure4','Bed4','Surface4','Thickness4','SmbMassBalance4']
 field_tolerances=[\
 		1e-09,1e-09,1e-09,1e-10,1e-10,1e-10,1e-10,1e-10,\
@@ -52,5 +52,5 @@
 	md.results.TransientSolution[0].Surface,\
 	md.results.TransientSolution[0].Thickness,\
-	md.results.TransientSolution[0].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[0].SmbMassBalance,\
 	md.results.TransientSolution[1].Vx,\
 	md.results.TransientSolution[1].Vy,\
@@ -60,5 +60,5 @@
 	md.results.TransientSolution[1].Surface,\
 	md.results.TransientSolution[1].Thickness,\
-	md.results.TransientSolution[1].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[1].SmbMassBalance,\
 	md.results.TransientSolution[2].Vx,\
 	md.results.TransientSolution[2].Vy,\
@@ -68,5 +68,5 @@
 	md.results.TransientSolution[2].Surface,\
 	md.results.TransientSolution[2].Thickness,\
-	md.results.TransientSolution[2].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[2].SmbMassBalance,\
 	md.results.TransientSolution[3].Vx,\
 	md.results.TransientSolution[3].Vy,\
@@ -76,4 +76,4 @@
 	md.results.TransientSolution[3].Surface,\
 	md.results.TransientSolution[3].Thickness,\
-	md.results.TransientSolution[3].SurfaceforcingsMassBalance,\
+	md.results.TransientSolution[3].SmbMassBalance,\
 	]
Index: /issm/trunk-jpl/test/NightlyRun/test4001.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test4001.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test4001.m	(revision 19527)
@@ -483,5 +483,5 @@
 	md.initialization.temperature=(273.15-20)*ones(md.mesh.numberofvertices,1);
 	md.initialization.pressure=md.materials.rho_ice*md.constants.g*(md.geometry.surface-md.geometry.base);
-	md.surfaceforcings.mass_balance = [1*ones(md.mesh.numberofvertices,1); 1];
+	md.smb.mass_balance = [1*ones(md.mesh.numberofvertices,1); 1];
 
 	%Flow law 
Index: /issm/trunk-jpl/test/NightlyRun/test407.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test407.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test407.m	(revision 19527)
@@ -8,4 +8,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=0;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk-jpl/test/NightlyRun/test407.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test407.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test407.py	(revision 19527)
@@ -18,4 +18,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=False
 md.transient.isthermal=True
 md.transient.isgroundingline=False
Index: /issm/trunk-jpl/test/NightlyRun/test423.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test423.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test423.m	(revision 19527)
@@ -21,4 +21,5 @@
 md.transient.isthermal=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=0;
 md.transient.isstressbalance=1;
 md.transient.isgroundingline=1;
Index: /issm/trunk-jpl/test/NightlyRun/test423.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test423.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test423.py	(revision 19527)
@@ -32,4 +32,5 @@
 md.transient.isthermal=False
 md.transient.ismasstransport=False
+md.transient.issmb=False
 md.transient.isstressbalance=True
 md.transient.isgroundingline=True
Index: /issm/trunk-jpl/test/NightlyRun/test424.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test424.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test424.m	(revision 19527)
@@ -10,5 +10,5 @@
 md.geometry.thickness(:)=1000.;
 md.geometry.surface=md.geometry.base+md.geometry.thickness;
-md.surfaceforcings.mass_balance(:)=100.;
+md.smb.mass_balance(:)=100.;
 md.transient.isstressbalance=0;
 md.transient.isgroundingline=1;
Index: /issm/trunk-jpl/test/NightlyRun/test424.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test424.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test424.py	(revision 19527)
@@ -20,5 +20,5 @@
 md.geometry.thickness[:]=1000.
 md.geometry.surface=md.geometry.base+md.geometry.thickness
-md.surfaceforcings.mass_balance[:]=100.
+md.smb.mass_balance[:]=100.
 md.transient.isstressbalance=False
 md.transient.isgroundingline=True
Index: /issm/trunk-jpl/test/NightlyRun/test425.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test425.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test425.m	(revision 19527)
@@ -10,5 +10,5 @@
 md.geometry.thickness(:)=1300.;
 md.geometry.surface=md.geometry.base+md.geometry.thickness;
-md.surfaceforcings.mass_balance(:)=-150.;
+md.smb.mass_balance(:)=-150.;
 md.transient.isstressbalance=0;
 md.transient.isgroundingline=1;
Index: /issm/trunk-jpl/test/NightlyRun/test425.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test425.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test425.py	(revision 19527)
@@ -20,5 +20,5 @@
 md.geometry.thickness[:]=1300.
 md.geometry.surface=md.geometry.base+md.geometry.thickness
-md.surfaceforcings.mass_balance[:]=-150.
+md.smb.mass_balance[:]=-150.
 md.transient.isstressbalance=False
 md.transient.isgroundingline=True
Index: /issm/trunk-jpl/test/NightlyRun/test426.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test426.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test426.m	(revision 19527)
@@ -9,5 +9,5 @@
 md.geometry.thickness(:)=1000.;
 md.geometry.surface=md.geometry.base+md.geometry.thickness;
-md.surfaceforcings.mass_balance(:)=100.;
+md.smb.mass_balance(:)=100.;
 md=extrude(md,3,1.);
 md=setflowequation(md,'SSA','all');
Index: /issm/trunk-jpl/test/NightlyRun/test426.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test426.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test426.py	(revision 19527)
@@ -19,5 +19,5 @@
 md.geometry.thickness[:]=1000.
 md.geometry.surface=md.geometry.base+md.geometry.thickness
-md.surfaceforcings.mass_balance[:]=100.
+md.smb.mass_balance[:]=100.
 md.extrude(3,1.);
 md=setflowequation(md,'SSA','all');
Index: /issm/trunk-jpl/test/NightlyRun/test427.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test427.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test427.m	(revision 19527)
@@ -12,5 +12,5 @@
 md=extrude(md,3,1.);
 
-md.surfaceforcings.mass_balance(:)=-150;
+md.smb.mass_balance(:)=-150;
 md.transient.isstressbalance=0;
 md.transient.isgroundingline=1;
Index: /issm/trunk-jpl/test/NightlyRun/test427.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test427.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test427.py	(revision 19527)
@@ -22,5 +22,5 @@
 md.extrude(3,1.)
 
-md.surfaceforcings.mass_balance[:]=-150
+md.smb.mass_balance[:]=-150
 md.transient.isstressbalance=False
 md.transient.isgroundingline=True
Index: /issm/trunk-jpl/test/NightlyRun/test433.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test433.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test433.m	(revision 19527)
@@ -22,4 +22,5 @@
 md.transient.isthermal=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=0;
 md.transient.isstressbalance=0;
 md.transient.isgroundingline=1;
Index: /issm/trunk-jpl/test/NightlyRun/test433.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test433.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test433.py	(revision 19527)
@@ -33,4 +33,5 @@
 md.transient.isthermal=False
 md.transient.ismasstransport=False
+md.transient.issmb=False
 md.transient.isstressbalance=False
 md.transient.isgroundingline=True
Index: /issm/trunk-jpl/test/NightlyRun/test435.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test435.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test435.m	(revision 19527)
@@ -31,5 +31,5 @@
 md.friction.coefficient(:)=sqrt(10^7)*ones(md.mesh.numberofvertices,1);
 md.friction.p=3*ones(md.mesh.numberofelements,1);
-md.surfaceforcings.mass_balance(:)=1;
+md.smb.mass_balance(:)=1;
 md.basalforcings.groundedice_melting_rate(:)=0;
 md.basalforcings.floatingice_melting_rate(:)=0;
@@ -38,4 +38,5 @@
 md.transient.isgroundingline=1;
 md.transient.ismasstransport=1;
+md.transient.issmb=1;
 md.groundingline.migration='SubelementMigration';
 md.timestepping.final_time=30;
Index: /issm/trunk-jpl/test/NightlyRun/test437.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test437.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test437.m	(revision 19527)
@@ -37,4 +37,5 @@
 %Additional settings
 md.transient.ismasstransport=0;
+md.transient.issmb=0;
 md.transient.isstressbalance=0;
 md.transient.isthermal=1;
Index: /issm/trunk-jpl/test/NightlyRun/test515.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test515.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test515.m	(revision 19527)
@@ -9,4 +9,5 @@
 md.transient.isstressbalance=0;
 md.transient.ismasstransport=0;
+md.transient.issmb=0;
 md.transient.isthermal=1;
 md.transient.isgroundingline=0;
Index: /issm/trunk-jpl/test/NightlyRun/test515.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test515.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test515.py	(revision 19527)
@@ -18,4 +18,5 @@
 md.transient.isstressbalance=False
 md.transient.ismasstransport=False
+md.transient.issmb=False
 md.transient.isthermal=True
 md.transient.isgroundingline=False
Index: /issm/trunk-jpl/test/NightlyRun/test703.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test703.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test703.m	(revision 19527)
@@ -43,5 +43,5 @@
 md.timestepping.final_time=0.000005;
 md.stressbalance.shelf_dampening=1;
-md.surfaceforcings.mass_balance=zeros(md.mesh.numberofvertices,1);
+md.smb.mass_balance=zeros(md.mesh.numberofvertices,1);
 md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
 md.basalforcings.floatingice_melting_rate=zeros(md.mesh.numberofvertices,1);
Index: /issm/trunk-jpl/test/NightlyRun/test801.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test801.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test801.m	(revision 19527)
@@ -11,4 +11,5 @@
 md.transient.iscalving=1;
 md.transient.ismasstransport=1;
+md.transient.issmb=1;
 md.transient.isthermal=0;
 md.transient.isgroundingline=1;
Index: /issm/trunk-jpl/test/NightlyRun/test801.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test801.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test801.py	(revision 19527)
@@ -21,4 +21,5 @@
 md.transient.iscalving=True
 md.transient.ismasstransport=True
+md.transient.issmb=True
 md.transient.isthermal=False
 md.transient.isgroundingline=True
Index: /issm/trunk-jpl/test/NightlyRun/test802.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test802.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test802.m	(revision 19527)
@@ -16,4 +16,5 @@
 md.transient.iscalving=1;
 md.transient.ismasstransport=1;
+md.transient.issmb=1;
 md.transient.isthermal=1;
 md.transient.isgroundingline=1;
Index: /issm/trunk-jpl/test/NightlyRun/test802.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test802.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test802.py	(revision 19527)
@@ -26,4 +26,5 @@
 md.transient.iscalving=True
 md.transient.ismasstransport=True
+md.transient.issmb=True
 md.transient.isthermal=True
 md.transient.isgroundingline=True
Index: /issm/trunk-jpl/test/NightlyRun/test803.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test803.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test803.m	(revision 19527)
@@ -18,4 +18,5 @@
 md.transient.iscalving=1;
 md.transient.ismasstransport=1;
+md.transient.issmb=1;
 md.transient.isthermal=1;
 md.transient.isgroundingline=1;
Index: /issm/trunk-jpl/test/NightlyRun/test803.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test803.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test803.py	(revision 19527)
@@ -28,4 +28,5 @@
 md.transient.iscalving=True
 md.transient.ismasstransport=True
+md.transient.issmb=True
 md.transient.isthermal=True
 md.transient.isgroundingline=True
Index: /issm/trunk-jpl/test/NightlyRun/test804.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test804.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test804.m	(revision 19527)
@@ -10,4 +10,5 @@
 md.transient.islevelset=1;
 md.transient.ismasstransport=1;
+md.transient.issmb=1;
 md.transient.isthermal=0;
 md.transient.isgroundingline=1;
Index: /issm/trunk-jpl/test/NightlyRun/test804.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test804.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test804.py	(revision 19527)
@@ -20,4 +20,5 @@
 md.transient.islevelset=True
 md.transient.ismasstransport=True
+md.transient.issmb=True
 md.transient.isthermal=False
 md.transient.isgroundingline=True
Index: /issm/trunk-jpl/test/NightlyRun/test805.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test805.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test805.m	(revision 19527)
@@ -17,4 +17,5 @@
 md.transient.islevelset=1;
 md.transient.ismasstransport=1;
+md.transient.issmb=1;
 md.transient.isthermal=1;
 md.transient.isgroundingline=1;
Index: /issm/trunk-jpl/test/NightlyRun/test805.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test805.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test805.py	(revision 19527)
@@ -27,4 +27,5 @@
 md.transient.islevelset=True
 md.transient.ismasstransport=True
+md.transient.issmb=True
 md.transient.isthermal=True
 md.transient.isgroundingline=True
Index: /issm/trunk-jpl/test/NightlyRun/test806.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test806.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test806.m	(revision 19527)
@@ -20,4 +20,5 @@
 md.transient.islevelset=1;
 md.transient.ismasstransport=1;
+md.transient.issmb=1;
 md.transient.isthermal=0;
 md.transient.isgroundingline=0;
Index: /issm/trunk-jpl/test/NightlyRun/test806.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test806.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test806.py	(revision 19527)
@@ -31,4 +31,5 @@
 md.transient.islevelset=True
 md.transient.ismasstransport=True
+md.transient.issmb=True
 md.transient.isthermal=False
 md.transient.isgroundingline=False
Index: /issm/trunk-jpl/test/NightlyRun/test807.m
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test807.m	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test807.m	(revision 19527)
@@ -20,4 +20,5 @@
 md.transient.islevelset=1;
 md.transient.ismasstransport=1;
+md.transient.issmb=1;
 md.transient.isthermal=0;
 md.transient.isgroundingline=0;
Index: /issm/trunk-jpl/test/NightlyRun/test807.py
===================================================================
--- /issm/trunk-jpl/test/NightlyRun/test807.py	(revision 19526)
+++ /issm/trunk-jpl/test/NightlyRun/test807.py	(revision 19527)
@@ -31,4 +31,5 @@
 md.transient.islevelset=True
 md.transient.ismasstransport=True
+md.transient.issmb=True
 md.transient.isthermal=False
 md.transient.isgroundingline=False
Index: /issm/trunk-jpl/test/Par/79North.par
===================================================================
--- /issm/trunk-jpl/test/Par/79North.par	(revision 19526)
+++ /issm/trunk-jpl/test/Par/79North.par	(revision 19527)
@@ -31,5 +31,5 @@
 md.basalforcings.floatingice_melting_rate(find(md.mask.groundedice_levelset<0.))=0.;
 md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
-md.surfaceforcings.mass_balance=15.*ones(md.mesh.numberofvertices,1);
+md.smb.mass_balance=15.*ones(md.mesh.numberofvertices,1);
 
 %Numerical parameters
Index: /issm/trunk-jpl/test/Par/79North.py
===================================================================
--- /issm/trunk-jpl/test/Par/79North.py	(revision 19526)
+++ /issm/trunk-jpl/test/Par/79North.py	(revision 19527)
@@ -43,5 +43,5 @@
 md.basalforcings.floatingice_melting_rate[numpy.nonzero(md.mask.groundedice_levelset<0.)[0]]=0.
 md.basalforcings.groundedice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
-md.surfaceforcings.mass_balance=15*numpy.ones((md.mesh.numberofvertices,1))
+md.smb.mass_balance=15*numpy.ones((md.mesh.numberofvertices,1))
 
 #Numerical parameters
Index: /issm/trunk-jpl/test/Par/RoundSheetEISMINT.par
===================================================================
--- /issm/trunk-jpl/test/Par/RoundSheetEISMINT.par	(revision 19526)
+++ /issm/trunk-jpl/test/Par/RoundSheetEISMINT.par	(revision 19527)
@@ -25,5 +25,5 @@
 sb=10^-2/1000.; %m/yr/m
 rel=450.*1000.; %m
-md.surfaceforcings.mass_balance=min(smb_max,sb*(rel-radius));
+md.smb.mass_balance=min(smb_max,sb*(rel-radius));
 
 disp('      creating velocities');
Index: /issm/trunk-jpl/test/Par/RoundSheetEISMINT.py
===================================================================
--- /issm/trunk-jpl/test/Par/RoundSheetEISMINT.py	(revision 19526)
+++ /issm/trunk-jpl/test/Par/RoundSheetEISMINT.py	(revision 19527)
@@ -28,5 +28,5 @@
 sb=10**-2/1000.    #m/yr/m
 rel=450.*1000.    #m
-md.surfaceforcings.mass_balance=numpy.minimum(smb_max*numpy.ones_like(radius),sb*(rel-radius))
+md.smb.mass_balance=numpy.minimum(smb_max*numpy.ones_like(radius),sb*(rel-radius))
 
 print "      creating velocities"
Index: /issm/trunk-jpl/test/Par/RoundSheetShelf.par
===================================================================
--- /issm/trunk-jpl/test/Par/RoundSheetShelf.par	(revision 19526)
+++ /issm/trunk-jpl/test/Par/RoundSheetShelf.par	(revision 19527)
@@ -62,5 +62,5 @@
 
 %Surface mass balance and basal melting
-md.surfaceforcings.mass_balance=-10.*ones(md.mesh.numberofvertices,1);
+md.smb.mass_balance=-10.*ones(md.mesh.numberofvertices,1);
 md.basalforcings.groundedice_melting_rate=zeros(md.mesh.numberofvertices,1);
 pos=find(md.mask.groundedice_levelset>0.);md.basalforcings.groundedice_melting_rate(pos)=10.;
Index: /issm/trunk-jpl/test/Par/RoundSheetShelf.py
===================================================================
--- /issm/trunk-jpl/test/Par/RoundSheetShelf.py	(revision 19526)
+++ /issm/trunk-jpl/test/Par/RoundSheetShelf.py	(revision 19527)
@@ -69,5 +69,5 @@
 
 #Surface mass balance and basal melting
-md.surfaceforcings.mass_balance=-10.*numpy.ones((md.mesh.numberofvertices,1))
+md.smb.mass_balance=-10.*numpy.ones((md.mesh.numberofvertices,1))
 md.basalforcings.groundedice_melting_rate=numpy.zeros((md.mesh.numberofvertices,1))
 pos=numpy.nonzero(md.mask.groundedice_levelset>0.)[0]
Index: /issm/trunk-jpl/test/Par/RoundSheetStaticEISMINT.par
===================================================================
--- /issm/trunk-jpl/test/Par/RoundSheetStaticEISMINT.par	(revision 19526)
+++ /issm/trunk-jpl/test/Par/RoundSheetStaticEISMINT.par	(revision 19527)
@@ -29,5 +29,5 @@
 sb=10^-2/1000.; %m/yr/m
 rel=450.*1000.; %m
-md.surfaceforcings.mass_balance=min(smb_max,sb*(rel-radius));
+md.smb.mass_balance=min(smb_max,sb*(rel-radius));
 
 disp('      creating velocities');
Index: /issm/trunk-jpl/test/Par/RoundSheetStaticEISMINT.py
===================================================================
--- /issm/trunk-jpl/test/Par/RoundSheetStaticEISMINT.py	(revision 19526)
+++ /issm/trunk-jpl/test/Par/RoundSheetStaticEISMINT.py	(revision 19527)
@@ -32,5 +32,5 @@
 sb=10**-2/1000.    #m/yr/m
 rel=450.*1000.    #m
-md.surfaceforcings.mass_balance=numpy.minimum(smb_max*numpy.ones_like(radius),sb*(rel-radius))
+md.smb.mass_balance=numpy.minimum(smb_max*numpy.ones_like(radius),sb*(rel-radius))
 
 print "      creating velocities"
Index: /issm/trunk-jpl/test/Par/SquareEISMINT.par
===================================================================
--- /issm/trunk-jpl/test/Par/SquareEISMINT.par	(revision 19526)
+++ /issm/trunk-jpl/test/Par/SquareEISMINT.par	(revision 19527)
@@ -27,5 +27,5 @@
 
 disp('      creating surface mass balance');
-md.surfaceforcings.mass_balance=0.2*ones(md.mesh.numberofvertices,1); %0m/a
+md.smb.mass_balance=0.2*ones(md.mesh.numberofvertices,1); %0m/a
 md.basalforcings.floatingice_melting_rate=0.*ones(md.mesh.numberofvertices,1); %0m/a
 md.basalforcings.groundedice_melting_rate=0.*ones(md.mesh.numberofvertices,1); %0m/a
Index: /issm/trunk-jpl/test/Par/SquareEISMINT.py
===================================================================
--- /issm/trunk-jpl/test/Par/SquareEISMINT.py	(revision 19526)
+++ /issm/trunk-jpl/test/Par/SquareEISMINT.py	(revision 19527)
@@ -30,5 +30,5 @@
 
 print "      creating surface mass balance"
-md.surfaceforcings.mass_balance=0.2*numpy.ones((md.mesh.numberofvertices,1))    #0m/a
+md.smb.mass_balance=0.2*numpy.ones((md.mesh.numberofvertices,1))    #0m/a
 md.basalforcings.floatingice_melting_rate=0.*numpy.ones((md.mesh.numberofvertices,1))    #0m/a
 md.basalforcings.groundedice_melting_rate=0.*numpy.ones((md.mesh.numberofvertices,1))    #0m/a
Index: /issm/trunk-jpl/test/Par/SquareSheetShelf.par
===================================================================
--- /issm/trunk-jpl/test/Par/SquareSheetShelf.par	(revision 19526)
+++ /issm/trunk-jpl/test/Par/SquareSheetShelf.par	(revision 19527)
@@ -33,5 +33,5 @@
 
 %Accumulation and melting
-md.surfaceforcings.mass_balance=10.*ones(md.mesh.numberofvertices,1);
+md.smb.mass_balance=10.*ones(md.mesh.numberofvertices,1);
 md.basalforcings.groundedice_melting_rate=5.*ones(md.mesh.numberofvertices,1);
 md.basalforcings.floatingice_melting_rate=5.*ones(md.mesh.numberofvertices,1);
Index: /issm/trunk-jpl/test/Par/SquareSheetShelf.py
===================================================================
--- /issm/trunk-jpl/test/Par/SquareSheetShelf.py	(revision 19526)
+++ /issm/trunk-jpl/test/Par/SquareSheetShelf.py	(revision 19527)
@@ -44,5 +44,5 @@
 
 #Accumulation and melting
-md.surfaceforcings.mass_balance=10.*numpy.ones((md.mesh.numberofvertices,1))
+md.smb.mass_balance=10.*numpy.ones((md.mesh.numberofvertices,1))
 md.basalforcings.groundedice_melting_rate=5.*numpy.ones((md.mesh.numberofvertices,1))
 md.basalforcings.floatingice_melting_rate=5.*numpy.ones((md.mesh.numberofvertices,1))
Index: /issm/trunk-jpl/test/Par/SquareShelfConstrained.par
===================================================================
--- /issm/trunk-jpl/test/Par/SquareShelfConstrained.par	(revision 19526)
+++ /issm/trunk-jpl/test/Par/SquareShelfConstrained.par	(revision 19527)
@@ -30,5 +30,5 @@
 
 %Surface mass balance and basal melting
-md.surfaceforcings.mass_balance=10*ones(md.mesh.numberofvertices,1);
+md.smb.mass_balance=10*ones(md.mesh.numberofvertices,1);
 md.basalforcings.floatingice_melting_rate=5*ones(md.mesh.numberofvertices,1);
 md.basalforcings.groundedice_melting_rate=5*ones(md.mesh.numberofvertices,1);
Index: /issm/trunk-jpl/test/Par/SquareShelfConstrained.py
===================================================================
--- /issm/trunk-jpl/test/Par/SquareShelfConstrained.py	(revision 19526)
+++ /issm/trunk-jpl/test/Par/SquareShelfConstrained.py	(revision 19527)
@@ -41,5 +41,5 @@
 
 #Surface mass balance and basal melting
-md.surfaceforcings.mass_balance=10.*numpy.ones((md.mesh.numberofvertices,1))
+md.smb.mass_balance=10.*numpy.ones((md.mesh.numberofvertices,1))
 md.basalforcings.groundedice_melting_rate=5.*numpy.ones((md.mesh.numberofvertices,1))
 md.basalforcings.floatingice_melting_rate=5.*numpy.ones((md.mesh.numberofvertices,1))
Index: /issm/trunk-jpl/test/Par/SquareThermal.par
===================================================================
--- /issm/trunk-jpl/test/Par/SquareThermal.par	(revision 19526)
+++ /issm/trunk-jpl/test/Par/SquareThermal.par	(revision 19527)
@@ -31,5 +31,5 @@
 
 disp('      creating surface mass balance');
-md.surfaceforcings.mass_balance=ones(md.mesh.numberofvertices,1)/md.constants.yts; %1m/a
+md.smb.mass_balance=ones(md.mesh.numberofvertices,1)/md.constants.yts; %1m/a
 md.basalforcings.groundedice_melting_rate=0.*ones(md.mesh.numberofvertices,1)/md.constants.yts; %1m/a
 md.basalforcings.floatingice_melting_rate=0.*ones(md.mesh.numberofvertices,1)/md.constants.yts; %1m/a
Index: /issm/trunk-jpl/test/Par/SquareThermal.py
===================================================================
--- /issm/trunk-jpl/test/Par/SquareThermal.py	(revision 19526)
+++ /issm/trunk-jpl/test/Par/SquareThermal.py	(revision 19527)
@@ -32,5 +32,5 @@
 
 print "      creating surface mass balance"
-md.surfaceforcings.mass_balance=numpy.ones((md.mesh.numberofvertices,1))/md.constants.yts    #1m/a
+md.smb.mass_balance=numpy.ones((md.mesh.numberofvertices,1))/md.constants.yts    #1m/a
 md.basalforcings.melting_rate=0.*numpy.ones((md.mesh.numberofvertices,1))/md.constants.yts    #1m/a
 
Index: /issm/trunk-jpl/test/Par/ValleyGlacierShelf.par
===================================================================
--- /issm/trunk-jpl/test/Par/ValleyGlacierShelf.par	(revision 19526)
+++ /issm/trunk-jpl/test/Par/ValleyGlacierShelf.par	(revision 19527)
@@ -49,7 +49,7 @@
 
 %Surface mass balance and basal melting
-md.surfaceforcings.mass_balance = 0.3*ones(md.mesh.numberofvertices,1);
-md.basalforcings.floatingice_melting_rate = md.surfaceforcings.mass_balance;
-md.basalforcings.groundedice_melting_rate = md.surfaceforcings.mass_balance;
+md.smb.mass_balance = 0.3*ones(md.mesh.numberofvertices,1);
+md.basalforcings.floatingice_melting_rate = md.smb.mass_balance;
+md.basalforcings.groundedice_melting_rate = md.smb.mass_balance;
 
 %Friction
Index: /issm/trunk-jpl/test/Par/ValleyGlacierShelf.py
===================================================================
--- /issm/trunk-jpl/test/Par/ValleyGlacierShelf.py	(revision 19526)
+++ /issm/trunk-jpl/test/Par/ValleyGlacierShelf.py	(revision 19527)
@@ -56,7 +56,7 @@
 
 #Surface mass balance and basal melting
-md.surfaceforcings.mass_balance=0.3*numpy.ones((md.mesh.numberofvertices,1))
-md.basalforcings.groundedice_melting_rate=md.surfaceforcings.mass_balance
-md.basalforcings.floatingice_melting_rate=md.surfaceforcings.mass_balance
+md.smb.mass_balance=0.3*numpy.ones((md.mesh.numberofvertices,1))
+md.basalforcings.groundedice_melting_rate=md.smb.mass_balance
+md.basalforcings.floatingice_melting_rate=md.smb.mass_balance
 
 #Friction
