diff --git a/Draft_SPARSE_USERs_Manual.pdf b/Draft_SPARSE_USERs_Manual.pdf
index 33755c2eb956ebb214a1e53b0772a7b3af6cc5c3..494c9ba0308775a54dfca0d0c5e1e8577d500e10 100644
Binary files a/Draft_SPARSE_USERs_Manual.pdf and b/Draft_SPARSE_USERs_Manual.pdf differ
diff --git a/SPARSE.m b/SPARSE.m
index d16eb20486377e54bd654b378be43be6d6239a47..9ae187c10100f671eaf122ff17e464112f507ce0 100644
--- a/SPARSE.m
+++ b/SPARSE.m
@@ -1,4 +1,4 @@
-function [trad,ts,tv,t0,rns,rnv,g,hs,hv,les,lev]=SPARSE(input1,input2,typerun,typeohm,ta,rh,rg,ua,glai,lai,zf,za,albe,rvvmin,xg,sigmoy)
+function [tsurf,ts,tv,t0,rns,rnv,g,hs,hv,les,lev]=SPARSE(input1,input2,typerun,typeohm,albe,emis,ta,rh,rg,ua,glai,lai,zf,za,rvvmin,xg,sigmoy)
 
 % function that computes actual or bounding transpiration and soil evaporation with
 % the SPARSE framework, i.e. Shuttleworht-Wallace dual source model with
@@ -12,7 +12,6 @@ function [trad,ts,tv,t0,rns,rnv,g,hs,hv,les,lev]=SPARSE(input1,input2,typerun,ty
 
 if typerun==1 % retrieval: 
     % imposed observed radiative temperature and view zenith angle
-    tsobs=input1;
     vza=input2;
     betas=1;
     betav=1;
@@ -29,6 +28,7 @@ end
 n=size(glai,1);
 m=size(glai,2);
 
+% emis = surface emissivity [-]
 % ta = air temperature [K]
 % rh = air relative humidity [%]
 % rg = incoming solar radiation [W/m2]
@@ -43,7 +43,8 @@ m=size(glai,2);
 % sigmoy = Beer Lambert law attenuation coefficient
 % vza = view zenith angle [rad]
 
-% RETRIEVAL MODE: tsobs = OBSERVED RADIATIVE surface temperature [°C]
+% RETRIEVAL MODE: input1 = OBSERVED RADIATIVE surface temperature [°C] % A
+% PRECISER
 
 % PRESCRIBED mode: betas: relative stress factor for the soil [-]
 % PRESCRIBED mode: betav: relative stress factor for the vegetation [-]
@@ -269,7 +270,12 @@ A3_1=zeros(n,m);
 A3_2=-aras-arav;
 A3_3=-bras-brav;
 
-B3=sigma*ones(n,m).*(tsobs+273.15).^4+cras+crav-ratm*ones(n,m);
+% 3 cases according to the type of data:
+% 
+
+Mrad=(1-emis).*ratm+sigma*ones(n,m).*emis.*(input1+273.15).^4;
+
+B3=Mrad+cras+crav-ratm*ones(n,m);
 
 det=A1_1.*A2_2.*A3_3 - A1_1.*A2_3.*A3_2 - A1_2.*A2_1.*A3_3 + A1_2.*A2_3.*A3_1 + A1_3.*A2_1.*A3_2 - A1_3.*A2_2.*A3_1;
 
@@ -346,7 +352,7 @@ A3_1(les<lesmin)=0;
 A3_2(les<lesmin)=-aras(les<lesmin)-arav(les<lesmin);
 A3_3(les<lesmin)=-bras(les<lesmin)-brav(les<lesmin);
 
-B3(les<lesmin)=sigma*(tsobs(les<lesmin)+273.15)^4+cras(les<lesmin)+crav(les<lesmin)-ratm;
+B3(les<lesmin)=Mrad(les<lesmin)+cras(les<lesmin)+crav(les<lesmin)-ratm;
 
 det(les<lesmin)=A1_1(les<lesmin).*A2_2(les<lesmin).*A3_3(les<lesmin)...
     - A1_1(les<lesmin).*A2_3(les<lesmin).*A3_2(les<lesmin) - A1_2(les<lesmin).*A2_1(les<lesmin).*A3_3(les<lesmin) + A1_2(les<lesmin).*A2_3(les<lesmin)...
@@ -501,7 +507,7 @@ end
         
 end % end stability loop 
  
-    trad=((ratm.*ones(n,m)-cras-crav-X2.*(aras+arav)-X3.*(bras+brav))/sigma).^0.25-273.15;
+    tsurf=((emis.*ratm.*ones(n,m)-cras-crav-X2.*(aras+arav)-X3.*(bras+brav))/(sigma.*emis)).^0.25-273.15;
     
     rns=(crns+arns.*X2+brns.*X3)./(1-xg);
     rnv=crnv+arnv.*X2+brnv.*X3;
diff --git a/index-1.html b/index-1.html
new file mode 100644
index 0000000000000000000000000000000000000000..ed755f88cbe94020cb528117c222ec7d2d68e902
--- /dev/null
+++ b/index-1.html
@@ -0,0 +1,32 @@
+<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>Inconnu(e) </title></head><body>
+<h1 id="sparse-model"><strong>SPARSE Model</strong></h1>
+<hr />
+<p>Soil Plant Atmosphere Remote Sensing Evapotranspiration model.</p>
+<h2 id="license">License:</h2>
+<p>This is free software under the GNU General Public License v3.0. 
+See https://www.gnu.org/licenses/gpl-3.0.en.html for details or the LICENSE.txt file</p>
+<h2 id="author">Author:</h2>
+<p>Gilles Boulet
+CESBIO UMR5126, (CNRS,UPS,CNES,IRD)
+13 avenue du Colonel Roche
+31401 Toulouse cedex 9
+http://www.cesbio.ups-tlse.fr/</p>
+<h2 id="contact">Contact:</h2>
+<p>gilles.boulet@ird.fr</p>
+<h2 id="acknowledgments">Acknowledgments:</h2>
+<p>The present study received support from the CNES (Centre National d’Etude Spatiale, France).</p>
+<h2 id="reference-for-the-model">Reference for the model:</h2>
+<p>Boulet, G., Mougenot, B., Lhomme, J.P., Fanise, P., Lili-Chabaane, Z., Olioso, A., Bahir, M., Rivalland, V., Jarlan, L., Merlin, O., Coudert, B., Er-Raki, S., Lagouarde, J.P., 2015. The SPARSE model for the prediction of water stress and evapotranspiration components from thermal infra-red data and its evaluation over irrigated and rainfed wheat. Hydrol. Earth Syst. Sci., 19(11): 4653-4672.</p>
+<p>Full-Text: http://www.hydrol-earth-syst-sci.net/19/4653/2015/hess-19-4653-2015.pdf</p>
+<h2 id="summary">Summary:</h2>
+<p>The SPARSE model is coded in Matlab language; it computes the energy budget components for two sources (soil and vegetation) from surface (Leaf Area Index, vegetation height) and meterological forcing data.</p>
+<h2 id="installation-requirements">Installation requirements:</h2>
+<ul>
+<li>respect the basic principles of GPL v3 licence.
+        https://www.gnu.org/licenses/gpl-3.0-standalone.html</li>
+<li>contact the author if bugs are found :
+    mailto:gilles.boulet@ird.fr </li>
+</ul>
+<h2 id="example-file">Example file:</h2>
+<p>main_test.m main sample file to run the model coded as funtion SPARSE.m</p>
+</body></html>
\ No newline at end of file
diff --git a/main_test.m b/main_test.m
index 741f00f0794694bedeb3e86fa4788cc17ba20bdf..251cabb54bb8b387d57692546ece617bc28d6371 100644
--- a/main_test.m
+++ b/main_test.m
@@ -48,7 +48,7 @@ rstmin=100; % minimum stomatal resistance (s/m)
 albe=0.25; % surface albedo (BEWARE: should vary diurnally and from day-to-day / code to be modified in that case) 
 xg=0.4; % soil heat flux to soil net radiation ratio at midday (BEWARE: should vary diurnally / code to be modified in that case)
 za=2.32; % reference height for the climate forcing [m]
-emis=0.98; % surface emissivity (BEWARE: should vary diurnally and from day-to-day / code to be modified in that case) 
+emis=0.99; % surface emissivity (BEWARE: should vary diurnally and from day-to-day / code to be modified in that case) 
 patm=990; % atmospheric pressure [hPa](BEWARE: should vary diurnally and from day-to-day / code to be modified in that case)
 sigmoy=0.45; % attenuation coef. of incoming radiation within the canopy (0.9 used in the layer case for longwave)
 sigma=5.67e-8; % Stafan-Boltzman constant [W m-2 K-4]
@@ -62,109 +62,114 @@ betastress=0.01;
  % run potential conditions
 
     % series
-[tradpot(i),tspot(i),tvpot(i),t0pot(i),rnspot(i),rnvpot(i),gpot(i),hspot(i),hvpot(i),lespot(i),levpot(i)]=...
-    SPARSE(betapot,betapot,2,1,ta(i),rh(i),rg(i),ua(i),glai(i),lai(i),zf(i),za,albe,rstmin,xg,sigmoy);
+[tsurfpot(i),tspot(i),tvpot(i),t0pot(i),rnspot(i),rnvpot(i),gpot(i),hspot(i),hvpot(i),lespot(i),levpot(i)]=...
+    SPARSE(betapot,betapot,2,1,albe,emis,ta(i),rh(i),rg(i),ua(i),glai(i),lai(i),zf(i),za,rstmin,xg,sigmoy);
 
     % parallel
     
-[tradpot2(i),tspot2(i),tvpot2(i),t0pot2(i),rnspot2(i),rnvpot2(i),gpot2(i),hspot2(i),hvpot2(i),lespot2(i),levpot2(i)]=...
-    SPARSE(betapot,betapot,2,2,ta(i),rh(i),rg(i),ua(i),glai(i),lai(i),zf(i),za,albe,rstmin,xg,sigmoy);
+[tsurfpot2(i),tspot2(i),tvpot2(i),t0pot2(i),rnspot2(i),rnvpot2(i),gpot2(i),hspot2(i),hvpot2(i),lespot2(i),levpot2(i)]=...
+    SPARSE(betapot,betapot,2,2,albe,emis,ta(i),rh(i),rg(i),ua(i),glai(i),lai(i),zf(i),za,rstmin,xg,sigmoy);
 
 % run fully stressed conditions
 
     % series
-[tradstress(i),tsstress(i),tvstress(i),t0stress(i),rnsstress(i),rnvstress(i),gstress(i),hsstress(i),hvstress(i),lesstress(i),levstress(i)]=...
-    SPARSE(betastress,betastress,2,1,ta(i),rh(i),rg(i),ua(i),glai(i),lai(i),zf(i),za,albe,rstmin,xg,sigmoy);
+[tsurfstress(i),tsstress(i),tvstress(i),t0stress(i),rnsstress(i),rnvstress(i),gstress(i),hsstress(i),hvstress(i),lesstress(i),levstress(i)]=...
+    SPARSE(betastress,betastress,2,1,albe,emis,ta(i),rh(i),rg(i),ua(i),glai(i),lai(i),zf(i),za,rstmin,xg,sigmoy);
 
     %parallel
     
-[tradstress2(i),tsstress2(i),tvstress2(i),t0stress2(i),rnsstress2(i),rnvstress2(i),gstress2(i),hsstress2(i),hvstress2(i),lesstress2(i),levstress2(i)]...
-    =SPARSE(betastress,betastress,2,2,ta(i),rh(i),rg(i),ua(i),glai(i),lai(i),zf(i),za,albe,rstmin,xg,sigmoy);
+[tsurfstress2(i),tsstress2(i),tvstress2(i),t0stress2(i),rnsstress2(i),rnvstress2(i),gstress2(i),hsstress2(i),hvstress2(i),lesstress2(i),levstress2(i)]...
+    =SPARSE(betastress,betastress,2,2,albe,emis,ta(i),rh(i),rg(i),ua(i),glai(i),lai(i),zf(i),za,rstmin,xg,sigmoy);
 
 % run layer/series version
 %tsobs2(i)=((sigma*(tsobs(i)+273.15)^4-(1-emis)*ratmobs(i))/(emis*sigma)).^0.25-273.15;
 
-[trad(i),ts(i),tv(i),toto(i),rns(i),rnv(i),g(i),hs(i),hv(i),les(i),lev(i)]=...
-    SPARSE(tsobs(i),vza,1,1,ta(i),rh(i),rg(i),ua(i),glai(i),lai(i),zf(i),za,albe,rstmin,xg,sigmoy);
+[tsurf(i),ts(i),tv(i),toto(i),rns(i),rnv(i),g(i),hs(i),hv(i),les(i),lev(i)]=...
+    SPARSE(tsobs(i),vza,1,1,albe,emis,ta(i),rh(i),rg(i),ua(i),glai(i),lai(i),zf(i),za,rstmin,xg,sigmoy);
 
 % run patch/parallel version
 
-[trad2(i),ts2(i),tv2(i),t02(i),rns2(i),rnv2(i),g2(i),hs2(i),hv2(i),les2(i),lev2(i)]=SPARSE(tsobs(i),vza,1,2,ta(i),rh(i),rg(i),ua(i),glai(i),lai(i),zf(i),za,albe,rstmin,xg,sigmoy);
-%[trad2(i),ts2(i),tv2(i),rns2(i),rnv2(i),g2(i),hs2(i),hv2(i),les2(i),lev2(i)]=TSEBKustas2000(ta(i),rh(i),rg(i),ua(i),glai(i),lai(i),zf(i),za,albe,xg,emis,sigmoy,tsobs(i));
+[tsurf2(i),ts2(i),tv2(i),t02(i),rns2(i),rnv2(i),g2(i),hs2(i),hv2(i),les2(i),lev2(i)]=SPARSE(tsobs(i),vza,1,2,albe,emis,ta(i),rh(i),rg(i),ua(i),glai(i),lai(i),zf(i),za,rstmin,xg,sigmoy);
+%[tsurf2(i),ts2(i),tv2(i),rns2(i),rnv2(i),g2(i),hs2(i),hv2(i),les2(i),lev2(i)]=TSEBKustas2000(ta(i),rh(i),rg(i),ua(i),glai(i),lai(i),zf(i),za,albe,xg,emis,sigmoy,tsobs(i));
 
  end
 
 % bounding (can be adusted according to pot and stress baselines)
  
-% bounding / stress 
-
-rns(les<lesstress)=rnsstress(les<lesstress);
-g(les<lesstress)=gstress(les<lesstress);
-hs(les<lesstress)=hsstress(les<lesstress);
-%hv(les<lesstress)=rnv(les<lesstress)+rnsstress(les<lesstress)-gstress(les<lesstress)-hsstress(les<lesstress)-lev(les<lesstress);
+% % bounding / stress 
+ 
+%  rns(les<lesstress)=rnsstress(les<lesstress);
+%  g(les<lesstress)=gstress(les<lesstress);
 les(les<lesstress)=lesstress(les<lesstress);
+hs(les<lesstress)=rns(les<lesstress)-g(les<lesstress)-lesstress(les<lesstress);
 
-les(hs>hsstress)=lesstress(hs>hsstress);
-rns(hs>hsstress)=rnsstress(hs>hsstress);
-g(hs>hsstress)=gstress(hs>hsstress);
-%hv(hs>hsstress)=rnv(hs>hsstress)+rnsstress(hs>hsstress)-gstress(hs>hsstress)-hsstress(hs>hsstress)-lev(hs>hsstress);
+% rns(hs>hsstress)=rnsstress(hs>hsstress);
+% g(hs>hsstress)=gstress(hs>hsstress);
 hs(hs>hsstress)=hsstress(hs>hsstress);
+les(hs>hsstress)=rns(hs>hsstress)-g(hs>hsstress)-hsstress(hs>hsstress);
 
-% rns2(les2<lesstress2)=rnsstress2(les2<lesstress2);
-% g2(les2<lesstress2)=gstress2(les2<lesstress2);
-% hs2(les2<lesstress2)=hsstress2(les2<lesstress2);
-% %hv2(les2<lesstress2)=rnv2(les2<lesstress2)+rnsstress2(les2<lesstress2)-gstress2(les2<lesstress2)-hsstress2(les2<lesstress2)-lev2(les2<lesstress2);
-% les2(les2<lesstress2)=lesstress2(les2<lesstress2);
-% 
-% les2(hs2>hsstress2)=lesstress2(hs2>hsstress2);
-% rns2(hs2>hsstress2)=rnsstress2(hs2>hsstress2);
-% g2(hs2>hsstress2)=gstress2(hs2>hsstress2);
-% %hv2(hs2>hsstress2)=rnv2(hs2>hsstress2)+rnsstress2(hs2>hsstress2)-gstress2(hs2>hsstress2)-hsstress2(hs2>hsstress2)-lev2(hs2>hsstress2);
-% hs2(hs2>hsstress2)=hsstress2(hs2>hsstress2);
-
-rnv(lev<levstress)=rnvstress(lev<levstress);
-hv(lev<levstress)=hvstress(lev<levstress);
-%hv(lev<levstress)=rnvstress(lev<levstress)+rns(lev<levstress)-g(lev<levstress)-hs(lev<levstress)-les(lev<levstress)-levstress(lev<levstress);
+% rnv(lev<levstress)=rnvstress(lev<levstress);
 lev(lev<levstress)=levstress(lev<levstress);
+hv(lev<levstress)=rnv(lev<levstress)-levstress(lev<levstress);
 
-rnv(hv>hvstress)=rnvstress(hv>hvstress);
-lev(hv>hvstress)=levstress(hv>hvstress);
-%hv(hv>hvstress)=rnvstress(hv>hvstress)+rns(hv>hvstress)-g(hv>hvstress)-hs(hv>hvstress)-les(hv>hvstress)-levstress(hv>hvstress);
+%rnv(hv>hvstress)=rnvstress(hv>hvstress);
+%lev(hv>hvstress)=levstress(hv>hvstress);
 hv(hv>hvstress)=hvstress(hv>hvstress);
+lev(hv>hvstress)=rnv(hv>hvstress)-hvstress(hv>hvstress);
+
+%***
+%rns2(les2<lesstress)=rnsstress(les2<lesstress);
+%g2(les2<lesstress)=gstress(les2<lesstress);
+les2(les2<lesstress)=lesstress(les2<lesstress);
+hs2(les2<lesstress)=rns2(les2<lesstress)-g2(les2<lesstress)-lesstress(les2<lesstress);
 
-% rnv2(lev2<levstress2)=rnvstress2(lev2<levstress2);
-% hv2(lev2<levstress2)=hvstress2(lev2<levstress2);
-% %hv2(lev2<levstress2)=rnvstress2(lev2<levstress2)+rns2(lev2<levstress2)-g2(lev2<levstress2)-hs2(lev2<levstress2)-les2(lev2<levstress2)-levstress2(lev2<levstress2);
-% lev2(lev2<levstress2)=levstress2(lev2<levstress2);
-% 
-% rnv2(hv2>hvstress2)=rnvstress2(hv2>hvstress2);
-% lev2(hv2>hvstress2)=levstress2(hv2>hvstress2);
-% %hv2(hv2>hvstress2)=rnvstress2(hv2>hvstress2)+rns2(hv2>hvstress2)-g2(hv2>hvstress2)-hs2(hv2>hvstress2)-les2(hv2>hvstress2)-levstress2(hv2>hvstress2);
-% hv2(hv2>hvstress2)=hvstress2(hv2>hvstress2);
+%rns2(hs2>hsstress)=rnsstress(hs2>hsstress);
+%g2(hs2>hsstress)=gstress(hs2>hsstress);
+hs2(hs2>hsstress)=hsstress(hs2>hsstress);
+les2(hs2>hsstress)=rns2(hs2>hsstress)-g2(hs2>hsstress)-hsstress(hs2>hsstress);
+
+ %rnv2(lev2<levstress)=rnvstress(lev2<levstress);
+lev2(lev2<levstress)=levstress(lev2<levstress);
+hv2(lev2<levstress)=rnv2(lev2<levstress)-levstress(lev2<levstress);
+
+%rnv2(hv2>hvstress)=rnvstress(hv2>hvstress);
+hv2(hv2>hvstress)=hvstress(hv2>hvstress);
+lev2(hv2>hvstress)=rnv2(hv2>hvstress)-hvstress(hv2>hvstress);
 
 % bounding / pot
 
-rns(les>lespot)=rnspot(les>lespot);
-g(les>lespot)=gpot(les>lespot);
-hs(les>lespot)=hspot(les>lespot);
-%hv(les>lespot)=rnv(les>lespot)+rnspot(les>lespot)-gpot(les>lespot)-hspot(les>lespot)-lev(les>lespot);
-les(les>lespot)=lespot(les>lespot);
-
-% rns2(les2>lespot2)=rnspot2(les2>lespot2);
-% g2(les2>lespot2)=gpot2(les2>lespot2);
-% hs2(les2>lespot2)=hspot2(les2>lespot2);
-% %hv2(les2>lespot2)=rnv2(les2>lespot2)+rnspot2(les2>lespot2)-gpot2(les2>lespot2)-hspot2(les2>lespot2)-lev2(les2>lespot2);
-% les2(les2>lespot2)=lespot2(les2>lespot2);
-
-rnv(lev>levpot)=rnvpot(lev>levpot);
-hv(lev>levpot)=hvpot(lev>levpot);
-%hv(lev>levpot)=rnvpot(lev>levpot)+rns(lev>levpot)-g(lev>levpot)-hs(lev>levpot)-les(lev>levpot)-levpot(lev>levpot);
+lespot(lespot<10)=10;
+hspot(lespot<10)=rnspot(lespot<10)-lespot(lespot<10);
+
+%rns(les>lespot)=rnspot(les>lespot);
+%g(les>lespot)=gpot(les>lespot);
+les(les>lespot)=max(lespot(les>lespot),0);
+hs(les>lespot)=rns(les>lespot)-g(les>lespot)-max(lespot(les>lespot),0);
+
+%rnv(lev>levpot)=rnvpot(lev>levpot);
 lev(lev>levpot)=levpot(lev>levpot);
+hv(lev>levpot)=rnv(lev>levpot)-levpot(lev>levpot);
+
+%rns2(les2>lespot)=rnspot(les2>lespot);
+%g2(les2>lespot)=gpot(les2>lespot);
+hs2(les2>lespot)=rns2(les2>lespot)-g2(les2>lespot)-max(lespot(les2>lespot),0);
+les2(les2>lespot)=max(lespot(les2>lespot),0);
+
+%rnv2(lev2>levpot)=rnvpot(lev2>levpot);
+hv2(lev2>levpot)=rnv2(lev2>levpot)-levpot(lev2>levpot);
+lev2(lev2>levpot)=levpot(lev2>levpot);
+
+hs(hs<hspot)=max(hspot(hs<hspot),-100);
+les(hs<hspot)=rns(hs<hspot)-g(hs<hspot)-max(hspot(hs<hspot),-100);
+
+hv(hv<hvpot)=max(hvpot(hv<hvpot),-100);
+lev(hv<hvpot)=rnv(hv<hvpot)-g(hv<hvpot)-max(hspot(hv<hvpot),-100);
+
+hs2(hs2<hspot)=max(hspot(hs2<hspot),-100);
+les2(hs2<hspot)=rns2(hs2<hspot)-g2(hs2<hspot)-max(hspot(hs2<hspot),-100);
 
-% rnv2(lev2>levpot2)=rnvpot2(lev2>levpot2);
-% hv2(lev2>levpot2)=hvpot2(lev2>levpot2);
-% %hv2(lev2>levpot2)=rnvpot2(lev2>levpot2)+rns2(lev2>levpot2)-g2(lev2>levpot2)-hs2(lev2>levpot2)-les2(lev2>levpot2)-levpot2(lev2>levpot2);
-% lev2(lev2>levpot2)=levpot2(lev2>levpot2);
+hv2(hv2<hvpot)=max(hvpot(hv2<hvpot),-100);
+lev2(hv2<hvpot)=rnv2(hv2<hvpot)-g(hv2<hvpot)-max(hspot(hv2<hvpot),-100);
 
 % computes total fluxes
 rn=rns+rnv;
@@ -187,7 +192,7 @@ a=doy-floor(doy);
 time=find(a>0.485-(1/24) & a<0.515-(1/24));
 time2=find(a>0.485-(1/24) & a<0.515-(1/24) & leobs >-100 & hobs>-100 & rnobs >-100 & gobs> - 100);
 
-% Rott Mean Square Error on Latent Heat LE, Sensible HEat H, Net radiation
+% Rott Mean Square Error on Latent Heat LE, Sensible Heat H, Net radiation
 % Rn and Soil Heat Flux G
 
 RMSE_LE = sqrt(mean((leobs(time2) - le(time2)).^2))  % RMSE Layer