Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 27772)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 27773)
@@ -42,5 +42,5 @@
 			IssmDouble *Tamp, 
 			IssmDouble *tmin, IssmDouble *tmax, IssmDouble *tmid, IssmDouble *mcrit, IssmDouble *wcrit, IssmDouble *tau_a, IssmDouble* tau_f, IssmDouble *afac, bool *verbose,
-			IssmDouble *tsurf_out, IssmDouble *smb_out, IssmDouble *smbi_out, IssmDouble *smbs_out, IssmDouble *saccu_out, IssmDouble *smelt_out, IssmDouble *albedo_out, IssmDouble *albedo_snow_out, IssmDouble *hsnow_out, IssmDouble *hice_out, IssmDouble *qmr_out);
+			IssmDouble *tsurf_out, IssmDouble *smb_out, IssmDouble *smbi_out, IssmDouble *smbs_out, IssmDouble *saccu_out, IssmDouble *smelt_out, IssmDouble *refr_out, IssmDouble *albedo_out, IssmDouble *albedo_snow_out, IssmDouble *hsnow_out, IssmDouble *hice_out, IssmDouble *qmr_out);
 #endif
 // _HAVE_SEMIC_
@@ -4251,4 +4251,5 @@
 	IssmDouble* saccu_out  =xNew<IssmDouble>(NUM_VERTICES); memset(saccu_out, 0., NUM_VERTICES*sizeof(IssmDouble));
 	IssmDouble* smelt_out  =xNew<IssmDouble>(NUM_VERTICES); memset(smelt_out, 0., NUM_VERTICES*sizeof(IssmDouble));
+	IssmDouble* refr_out  =xNew<IssmDouble>(NUM_VERTICES); memset(refr_out, 0., NUM_VERTICES*sizeof(IssmDouble));
 	IssmDouble* albedo_out =xNew<IssmDouble>(NUM_VERTICES); memset(albedo_out, 0., NUM_VERTICES*sizeof(IssmDouble));
 	IssmDouble* albedo_snow_out =xNew<IssmDouble>(NUM_VERTICES); memset(albedo_snow_out, 0., NUM_VERTICES*sizeof(IssmDouble));
@@ -4426,5 +4427,5 @@
 			Tamp_in,
 			&tmin, &tmax, &tmid, &mcrit, &wcrit, &tau_a, &tau_f, &afac, &semic_verbose,
-			tsurf_out, smb_out, smbi_out, smbs_out, saccu_out, smelt_out,albedo_out, albedo_snow_out, hsnow_out, hice_out, qmr_out);
+			tsurf_out, smb_out, smbi_out, smbs_out, saccu_out, smelt_out, refr_out, albedo_out, albedo_snow_out, hsnow_out, hice_out, qmr_out);
 
 	for (int iv = 0; iv<NUM_VERTICES; iv++){
@@ -4438,4 +4439,7 @@
 		saccu_out[iv] = saccu_out[iv]*yts; // w.e. m/sec -> m/yr
 	}
+	/*
+	 * unit conversion is not required for smelt and refr_out.
+	 */
 
 	if(isverbose && this->Sid()==0){
@@ -4453,7 +4457,7 @@
 			//this->AddInput(SmbMassBalanceTotalEnum,&smb_out[0],P1DGEnum);
 			// 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(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);
@@ -4462,4 +4466,5 @@
 			// smelt 
 			this->AddInput(SmbMeltEnum,        &smelt_out[0],P1DGEnum);
+			this->AddInput(SmbRefreezeEnum,    &refr_out[0],P1DGEnum);
 			this->AddInput(SmbAlbedoEnum,      &albedo_out[0],P1DGEnum);
 			this->AddInput(SmbAlbedoSnowEnum,  &albedo_snow_out[0],P1DGEnum);
@@ -4497,4 +4502,5 @@
 	xDelete<IssmDouble>(saccu_out);
 	xDelete<IssmDouble>(smelt_out);
+	xDelete<IssmDouble>(refr_out);
 	xDelete<IssmDouble>(albedo_out);
 	xDelete<IssmDouble>(albedo_snow_out);
Index: /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/run_semic_transient.f90
===================================================================
--- /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/run_semic_transient.f90	(revision 27772)
+++ /issm/trunk-jpl/src/c/modules/SurfaceMassBalancex/run_semic_transient.f90	(revision 27773)
@@ -8,5 +8,5 @@
       Tamp, &
       tmin, tmax, tmid, mcrit, w_crit, tau_a, tau_f, afac, verbose, &
-      tsurf_out, smb_out, smbi_out, smbs_out, saccu_out, smelt_out, alb_out, & 
+      tsurf_out, smb_out, smbi_out, smbs_out, saccu_out, smelt_out,  refr_out, alb_out, & 
       alb_snow_out,hsnow_out,hice_out,qmr_out) !{{{
 
@@ -55,4 +55,5 @@
    double precision, intent(out), dimension(nx):: saccu_out    ! accumulation [m/s]
    double precision, intent(out), dimension(nx):: smelt_out    ! ablation [m/s]
+   double precision, intent(out), dimension(nx):: refr_out     ! freezing [m/s]
    double precision, intent(out), dimension(nx):: alb_out      ! grid-averaged albedo [no unit] 
    double precision, intent(out), dimension(nx):: alb_snow_out 
@@ -232,4 +233,5 @@
             saccu_out         =surface%now%acc      ! acc      = snowfall - sublimiation - refreezing 
             smelt_out         =surface%now%melt     ! potential surface melt = melt_ice + melt_snow
+            refr_out          =surface%now%refr     ! refreezing values. [m/sec]
             alb_out           =surface%now%alb
             alb_snow_out      =surface%now%alb_snow
Index: /issm/trunk-jpl/src/m/classes/SMBsemic.m
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBsemic.m	(revision 27772)
+++ /issm/trunk-jpl/src/m/classes/SMBsemic.m	(revision 27773)
@@ -89,5 +89,5 @@
 			if self.ismethod == 1
 				list = {'SmbMassBalance','SmbMassBalanceSnow','SmbMassBalanceIce',...
-					'SmbMassBalanceSemic','SmbMelt','SmbAccumulation',...
+					'SmbMassBalanceSemic','SmbMelt','SmbRefreeze','SmbAccumulation',...
 					'SmbHIce','SmbHSnow','SmbAlbedo','SmbAlbedoSnow','TemperatureSEMIC',...
 					'SmbSemicQmr'};
@@ -257,6 +257,10 @@
 			end
 			% albedo_scheme - 0: none, 1: slater, 2: isba, 3: denby, 4: alex.
-			if self.albedo_scheme == 1
-				disp(sprintf('\n\tSEMIC snow albedo parameters for Slater et al, (1998).'));
+         if self.albedo_scheme == 0:
+            disp(sprintf('\n\tSEMIC snow albedo parameter of None.'));
+				disp(sprintf('\t   albedo of snow is updated from albedo snow max (alb_smax).'));
+            disp(sprintf('\t   alb_snow = abl_smax'));
+			elseif self.albedo_scheme == 1
+				disp(sprintf('\n\tSEMIC snow albedo parameters of Slater et al, (1998).'));
 				disp(sprintf('\t   alb = alb_smax - (alb_smax - alb_smin)*tm^(3.0)'))
 				disp(sprintf('\t   tm  = 1 (tsurf > 273.15 K)'));
Index: /issm/trunk-jpl/src/m/classes/SMBsemic.py
===================================================================
--- /issm/trunk-jpl/src/m/classes/SMBsemic.py	(revision 27772)
+++ /issm/trunk-jpl/src/m/classes/SMBsemic.py	(revision 27773)
@@ -113,6 +113,10 @@
             s += '{}\n'.format(fielddisplay(self,'albl','background albedo for bare land (default: 0.07)'))
         # albedo_scheme - 0: none, 1: slater, 2: isba, 3: denby, 4: alex.
-        if self.albedo_scheme == 1:
-            s += '\n\tSEMIC snow albedo parameters for Slater et al, (1998).\n'
+        if self.albedo_scheme == 0:
+            s += '\n\tSEMIC snow albedo parameter of None.\n'
+				s += '\t   albedo of snow is updated from albedo snow max (alb_smax).\n'
+            s += '\t   alb_snow = abl_smax \n '
+        elif self.albedo_scheme == 1:
+            s += '\n\tSEMIC snow albedo parameters of Slater et al, (1998).\n'
             s += '\t   alb = alb_smax - (alb_smax - alb_smin)*tm^(3.0)\n'
             s += '\t   tm  = 1 (tsurf > 273.15 K)\n'
@@ -123,5 +127,5 @@
             s += '{}\n'.format(fielddisplay(self, 'tmax', 'maxmium temperature for which albedo decline become effective. This value should be fixed. (default: 273.15 K)[unit: K])'))
         elif self.albedo_scheme == 2:
-            s += '\n\tSEMIC snow albedo parameters for ISBA.? where is citation?\n'
+            s += '\n\tSEMIC snow albedo parameters of ISBA.? where is citation?\n'
             s += '{}\n'.format(fielddisplay(self, 'mcrit', 'critical melt rate (default: 6e-8) [unit: m/sec]'))
             s += '{}\n'.format(fielddisplay(self, 'wcrit', 'critical liquid water content (default: 15) [unit: kg/m2]'))
@@ -129,8 +133,8 @@
             s += '{}\n'.format(fielddisplay(self, 'tau_f', 'wet albedo decline [unit: 1/day]'))
         elif self.albedo_scheme == 3:
-            s += '\n\tSEMIC snow albedo parameters for Denby et al. (2002 Tellus)\n'
+            s += '\n\tSEMIC snow albedo parameters of Denby et al. (2002 Tellus)\n'
             s += '{}\n'.format(fielddisplay(self,'mcrit','critical melt rate (defaut: 6e-8) [unit: m/sec]'))
         elif self.albedo_scheme == 4:
-            s += '\n\tSEMIC snow albedo parameters for Alex.?\n'
+            s += '\n\tSEMIC snow albedo parameters of Alex.?\n'
             s += '{}\n'.format(fielddisplay(self,'afac','[unit: ?]'))
             s += '{}\n'.format(fielddisplay(self,'tmid','[unit: ?]'))
@@ -167,5 +171,8 @@
     def outputlists(self, md):  # {{{
         if self.ismethod:
-            list = ['SmbMassBalance', 'SmbMassBalanceSnow', 'SmbMelt', 'SmbAccumulation', 'SmbHIce', 'SmbHSnow', 'SmbAlbedo', 'SmbAlbedoSnow', 'TemperatureSEMIC']
+            list = ['SmbMassBalance', 'SmbMassBalanceSnow', 'SmbMassBalanceIce',
+                  'SmbMassBalanceSecmi', 'SmbMelt', 'SmbRefreeze','SmbAccumulation',
+                  'SmbHIce', 'SmbHSnow', 'SmbAlbedo', 'SmbAlbedoSnow', 'TemperatureSEMIC',
+                  'SmbSemicQmr']
         else:
             list = ['SmbMassBalance']
