
clear all 

FNAME='/cluster/shared/noresm/inputdata/lnd/clm2/surfdata/surfdata_1.9x2.5_simyr1850_c110114.nc';
FCLM5='/cluster/shared/noresm/inputdata/lnd/clm2/surfdata_map/surfdata_1.9x2.5_16pfts_Irrig_CMIP6_simyr1850_c170824.nc'; 
FCLM4='/cluster/shared/noresm/inputdata/lnd/clm2/surfdata/surfdata_1.9x2.5_simyr1850_c110114_CMIP6.nc';

copyfile(FNAME,FCLM4,'f');
fileattrib(FCLM4,'+w +x','a');

PCT_WETLAND=ncread(FNAME,'PCT_WETLAND');
PCT_LAKE=ncread(FNAME,'PCT_LAKE');
PCT_GLACIER=ncread(FNAME,'PCT_GLACIER');PCT_GLACIER_OLD=PCT_GLACIER;
PCT_URBAN=ncread(FNAME,'PCT_URBAN');
PCT_PFT=ncread(FNAME,'PCT_PFT');
PCT_GLC_MEC=ncread(FNAME,'PCT_GLC_MEC');


PCT_NAT_PFT=ncread(FCLM5,'PCT_NAT_PFT');
PCT_CFT=ncread(FCLM5,'PCT_CFT');
PCT_NATVEG=ncread(FCLM5,'PCT_NATVEG');
PCT_CROP=ncread(FCLM5,'PCT_CROP');
for n=1:size(PCT_NAT_PFT,3)
  PCT_NAT_PFT(:,:,n)=PCT_NAT_PFT(:,:,n).*PCT_NATVEG/100;
end
for n=1:size(PCT_CFT,3)
  PCT_CFT(:,:,n)=PCT_CFT(:,:,n).*PCT_CROP/100;
end
PCT_CFT(:,:,1)=PCT_CFT(:,:,1)+PCT_CFT(:,:,2);PCT_CFT(:,:,2)=0; % no irregated crops!
PCT_PFT_NEW=cat(3,PCT_NAT_PFT,PCT_CFT);


PCT_RES=PCT_GLACIER+PCT_LAKE+PCT_WETLAND+PCT_URBAN; 
PCT_RES_NEW=PCT_RES+sum(PCT_PFT-PCT_PFT_NEW,3);
%
ind=find(PCT_RES>1e-3 & sum(PCT_PFT,3)>1e-3 & sum(PCT_PFT_NEW,3)>1e-3);
FAC=PCT_RES_NEW(ind)./PCT_RES(ind);
PCT_GLACIER(ind)=PCT_GLACIER(ind).*FAC;
PCT_LAKE(ind)=PCT_LAKE(ind).*FAC;
PCT_URBAN(ind)=PCT_URBAN(ind).*FAC;
PCT_WETLAND(ind)=PCT_WETLAND(ind).*FAC;
%
ind=find(PCT_RES<1e-3 & sum(PCT_PFT,3)>1e-3 & sum(PCT_PFT_NEW,3)>1e-3);
PCT_PFTSUM_NEW=sum(PCT_PFT_NEW,3);
PCT_WETLAND(ind)=100-PCT_PFTSUM_NEW(ind); 

for k=1:size(PCT_GLC_MEC,3)
  PCT_GLC_MEC(:,:,k)=PCT_GLC_MEC(:,:,k).*PCT_GLACIER./PCT_GLACIER_OLD;
end 
PCT_GLC_MEC(isnan(PCT_GLC_MEC))=0;

ind=find(sum(PCT_PFT,3)>1e-3 & sum(PCT_PFT_NEW,3)>1e-3);
for n=1:size(PCT_PFT,3)
  tmp=PCT_PFT(:,:,n);
  tmp_new=PCT_PFT_NEW(:,:,n);
  tmp(ind)=tmp_new(ind);
  PCT_PFT(:,:,n)=tmp;
end
PCT_PFT=PCT_PFT_NEW; 

PCT_ALL=PCT_GLACIER+PCT_LAKE+PCT_URBAN+PCT_WETLAND+PCT_PFTSUM_NEW;

ncwrite(FCLM4,'PCT_WETLAND',PCT_WETLAND);
ncwrite(FCLM4,'PCT_GLACIER',PCT_GLACIER);
ncwrite(FCLM4,'PCT_GLC_MEC',PCT_GLC_MEC);
ncwrite(FCLM4,'PCT_URBAN',PCT_URBAN);
ncwrite(FCLM4,'PCT_LAKE',PCT_LAKE);
ncwrite(FCLM4,'PCT_PFT',PCT_PFT);
