Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 27651)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 27652)
@@ -4478,5 +4478,7 @@
 			// water equivalent SMB ice to ice equivalent.
 			this->AddInput(SmbMassBalanceEnum,    &smbi_out[0],P1DGEnum);
+			this->AddInput(SmbMassBalanceIceEnum, &smbi_out[0],P1DGEnum);
 			this->AddInput(SmbMassBalanceSnowEnum,&smbs_out[0],P1DGEnum);
+			this->AddInput(SmbMassBalanceSemicEnum,&smb_out[0],P1DGEnum);
 			//this->AddInput(SmbMassBalanceSnowEnum,&smbs_out[0],P1DGEnum);
 			// saccu - accumulation of snow.
Index: /issm/trunk-jpl/src/c/shared/Enum/Enum.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27651)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enum.vim	(revision 27652)
@@ -1088,4 +1088,6 @@
 syn keyword cConstant SmbMassBalanceEnum
 syn keyword cConstant SmbMassBalanceSnowEnum
+syn keyword cConstant SmbMassBalanceIceEnum
+syn keyword cConstant SmbMassBalanceSemicEnum
 syn keyword cConstant SmbMassBalanceSubstepEnum
 syn keyword cConstant SmbMassBalanceTransientEnum
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27651)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h	(revision 27652)
@@ -1084,4 +1084,6 @@
 	SmbMassBalanceEnum,
 	SmbMassBalanceSnowEnum,
+	SmbMassBalanceIceEnum,
+	SmbMassBalanceSemicEnum,
    SmbMassBalanceSubstepEnum,
    SmbMassBalanceTransientEnum,
Index: /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27651)
+++ /issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp	(revision 27652)
@@ -1090,4 +1090,6 @@
 		case SmbMassBalanceEnum : return "SmbMassBalance";
 		case SmbMassBalanceSnowEnum : return "SmbMassBalanceSnow";
+		case SmbMassBalanceIceEnum : return "SmbMassBalanceIce";
+		case SmbMassBalanceSemicEnum : return "SmbMassBalanceSemic";
 		case SmbMassBalanceSubstepEnum : return "SmbMassBalanceSubstep";
 		case SmbMassBalanceTransientEnum : return "SmbMassBalanceTransient";
Index: /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27651)
+++ /issm/trunk-jpl/src/c/shared/Enum/Enumjl.vim	(revision 27652)
@@ -1081,4 +1081,6 @@
 syn keyword juliaConstC SmbMassBalanceEnum
 syn keyword juliaConstC SmbMassBalanceSnowEnum
+syn keyword juliaConstC SmbMassBalanceIceEnum
+syn keyword juliaConstC SmbMassBalanceSemicEnum
 syn keyword juliaConstC SmbMassBalanceSubstepEnum
 syn keyword juliaConstC SmbMassBalanceTransientEnum
Index: /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
===================================================================
--- /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27651)
+++ /issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp	(revision 27652)
@@ -1114,4 +1114,6 @@
 	      else if (strcmp(name,"SmbMassBalance")==0) return SmbMassBalanceEnum;
 	      else if (strcmp(name,"SmbMassBalanceSnow")==0) return SmbMassBalanceSnowEnum;
+	      else if (strcmp(name,"SmbMassBalanceIce")==0) return SmbMassBalanceIceEnum;
+	      else if (strcmp(name,"SmbMassBalanceSemic")==0) return SmbMassBalanceSemicEnum;
 	      else if (strcmp(name,"SmbMassBalanceSubstep")==0) return SmbMassBalanceSubstepEnum;
 	      else if (strcmp(name,"SmbMassBalanceTransient")==0) return SmbMassBalanceTransientEnum;
@@ -1119,10 +1121,10 @@
 	      else if (strcmp(name,"SmbMeanLHF")==0) return SmbMeanLHFEnum;
 	      else if (strcmp(name,"SmbMeanSHF")==0) return SmbMeanSHFEnum;
-	      else if (strcmp(name,"SmbMeanULW")==0) return SmbMeanULWEnum;
-	      else if (strcmp(name,"SmbMelt")==0) return SmbMeltEnum;
          else stage=10;
    }
    if(stage==10){
-	      if (strcmp(name,"SmbMonthlytemperatures")==0) return SmbMonthlytemperaturesEnum;
+	      if (strcmp(name,"SmbMeanULW")==0) return SmbMeanULWEnum;
+	      else if (strcmp(name,"SmbMelt")==0) return SmbMeltEnum;
+	      else if (strcmp(name,"SmbMonthlytemperatures")==0) return SmbMonthlytemperaturesEnum;
 	      else if (strcmp(name,"SmbMSurf")==0) return SmbMSurfEnum;
 	      else if (strcmp(name,"SmbNetLW")==0) return SmbNetLWEnum;
@@ -1242,10 +1244,10 @@
 	      else if (strcmp(name,"VxShear")==0) return VxShearEnum;
 	      else if (strcmp(name,"VxSurface")==0) return VxSurfaceEnum;
-	      else if (strcmp(name,"VyAverage")==0) return VyAverageEnum;
-	      else if (strcmp(name,"VyBase")==0) return VyBaseEnum;
          else stage=11;
    }
    if(stage==11){
-	      if (strcmp(name,"VyDebris")==0) return VyDebrisEnum;
+	      if (strcmp(name,"VyAverage")==0) return VyAverageEnum;
+	      else if (strcmp(name,"VyBase")==0) return VyBaseEnum;
+	      else if (strcmp(name,"VyDebris")==0) return VyDebrisEnum;
 	      else if (strcmp(name,"Vy")==0) return VyEnum;
 	      else if (strcmp(name,"VyMesh")==0) return VyMeshEnum;
@@ -1365,10 +1367,10 @@
 	      else if (strcmp(name,"Outputdefinition93")==0) return Outputdefinition93Enum;
 	      else if (strcmp(name,"Outputdefinition94")==0) return Outputdefinition94Enum;
-	      else if (strcmp(name,"Outputdefinition95")==0) return Outputdefinition95Enum;
-	      else if (strcmp(name,"Outputdefinition96")==0) return Outputdefinition96Enum;
          else stage=12;
    }
    if(stage==12){
-	      if (strcmp(name,"Outputdefinition97")==0) return Outputdefinition97Enum;
+	      if (strcmp(name,"Outputdefinition95")==0) return Outputdefinition95Enum;
+	      else if (strcmp(name,"Outputdefinition96")==0) return Outputdefinition96Enum;
+	      else if (strcmp(name,"Outputdefinition97")==0) return Outputdefinition97Enum;
 	      else if (strcmp(name,"Outputdefinition98")==0) return Outputdefinition98Enum;
 	      else if (strcmp(name,"Outputdefinition99")==0) return Outputdefinition99Enum;
@@ -1488,10 +1490,10 @@
 	      else if (strcmp(name,"FrontalForcingsRignot")==0) return FrontalForcingsRignotEnum;
 	      else if (strcmp(name,"FrontalForcingsRignotarma")==0) return FrontalForcingsRignotarmaEnum;
-	      else if (strcmp(name,"Fset")==0) return FsetEnum;
-	      else if (strcmp(name,"FullMeltOnPartiallyFloating")==0) return FullMeltOnPartiallyFloatingEnum;
          else stage=13;
    }
    if(stage==13){
-	      if (strcmp(name,"GLheightadvectionAnalysis")==0) return GLheightadvectionAnalysisEnum;
+	      if (strcmp(name,"Fset")==0) return FsetEnum;
+	      else if (strcmp(name,"FullMeltOnPartiallyFloating")==0) return FullMeltOnPartiallyFloatingEnum;
+	      else if (strcmp(name,"GLheightadvectionAnalysis")==0) return GLheightadvectionAnalysisEnum;
 	      else if (strcmp(name,"GaussPenta")==0) return GaussPentaEnum;
 	      else if (strcmp(name,"GaussSeg")==0) return GaussSegEnum;
@@ -1611,10 +1613,10 @@
 	      else if (strcmp(name,"MeshX")==0) return MeshXEnum;
 	      else if (strcmp(name,"MeshY")==0) return MeshYEnum;
-	      else if (strcmp(name,"MinVel")==0) return MinVelEnum;
-	      else if (strcmp(name,"MinVx")==0) return MinVxEnum;
          else stage=14;
    }
    if(stage==14){
-	      if (strcmp(name,"MinVy")==0) return MinVyEnum;
+	      if (strcmp(name,"MinVel")==0) return MinVelEnum;
+	      else if (strcmp(name,"MinVx")==0) return MinVxEnum;
+	      else if (strcmp(name,"MinVy")==0) return MinVyEnum;
 	      else if (strcmp(name,"MinVz")==0) return MinVzEnum;
 	      else if (strcmp(name,"MismipFloatingMeltRate")==0) return MismipFloatingMeltRateEnum;
@@ -1734,10 +1736,10 @@
 	      else if (strcmp(name,"SubelementMigration")==0) return SubelementMigrationEnum;
 	      else if (strcmp(name,"SurfaceSlopeSolution")==0) return SurfaceSlopeSolutionEnum;
-	      else if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
-	      else if (strcmp(name,"Tetra")==0) return TetraEnum;
          else stage=15;
    }
    if(stage==15){
-	      if (strcmp(name,"TetraInput")==0) return TetraInputEnum;
+	      if (strcmp(name,"TaylorHood")==0) return TaylorHoodEnum;
+	      else if (strcmp(name,"Tetra")==0) return TetraEnum;
+	      else if (strcmp(name,"TetraInput")==0) return TetraInputEnum;
 	      else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
 	      else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
Index: /issm/trunk-jpl/src/m/classes/SMBsemic.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBsemic.m	(revision 27651)
+++ /issm/trunk-jpl/src/m/classes/SMBsemic.m	(revision 27652)
@@ -88,6 +88,8 @@
 		function list = outputlists(self,md) % {{{
 			if self.ismethod == 1
-				list = {'SmbMassBalance','SmbMassBalanceSnow','SmbMelt','SmbAccumulation',...
-					'SmbHIce','SmbHSnow','SmbAlbedo','SmbAlbedoSnow','TemperatureSEMIC'};
+				list = {'SmbMassBalance','SmbMassBalanceSnow','SmbMassBalanceIce',...
+					'SmbMassBalanceSemic','SmbMelt','SmbAccumulation',...
+					'SmbHIce','SmbHSnow','SmbAlbedo','SmbAlbedoSnow','TemperatureSEMIC',...
+					'SmbSemicQmr'};
 			else
 				list = {'SmbMassBalance'};
@@ -204,5 +206,12 @@
 			md = checkfield(md,'fieldname','smb.averaging','numel',[1],'values',[0 1 2]);
 			md = checkfield(md,'fieldname','smb.requested_outputs','stringrow',1);
-
+			% check requested_outputs
+			if self.ismethod==1
+				for i = 1:length(self.requested_outputs)
+					if ~any(strcmpi(self.requested_outputs{i},self.outputlists))
+						error(sprintf('ERROR: %s requested_output is not available',self.requested_outputs{i}));
+					end
+				end
+			end
 		end % }}}
 		function disp(self) % {{{
@@ -226,4 +235,5 @@
 			fielddisplay(self,'rdl','longwave downward radiation decrease (default is 0.29 [W/m^2/km]; Marty et al. 2002)');
 			fielddisplay(self,'s0gcm','GCM reference elevation; (default is 0) [m]');
+			fielddisplay(self,'albedo_scheme','albedom scheme. 0: none, 1: (default is 0)');
 
 			fielddisplay(self,'ismethod','method for calculating SMB with SEMIC. Default version of SEMIC is really slow. 0: steady, 1: transient (default: 0)');
