program time_ex USE mo_numerics USE mo_physics ! declare output fields real, dimension(xdim,ydim,ndays_yr) :: Tc1, Ta1, q1, ap1 real, dimension(xdim,ydim,ndays_yr) :: Tc2, Ta2, q2, ap2 ! declare fields real, dimension(xdim,ydim) :: qs, qr, tclim2 real, dimension(xdim,ydim,ndays_yr) :: qread real, dimension(ydim,ndays_yr) :: swread, swread2 integer, dimension(ndays_yr):: t = (/(i,i=1,ndays_yr)/) ! jday index 100 FORMAT('climate: ',F9.2, 5E12.4) print*,'% start climate shell' ! ipx=46; ipy=24+2 ! troppac (T31) ! ipx=46; ipy=48 ! npole (T31) ! ipx=46; ipy=16 ! shemis (T31) ! ipx= 6; ipy=30 ! sahara (T31) ! ipx=65; ipy=23 ! eq. spac (T31) ipx=46; ipy=24+8 print*,'% diagonstic point lat/lon: ',3.75*ipy-90, 3.75*ipx open(10,file='namelist') open(11,file='tclim',ACCESS='DIRECT',FORM='UNFORMATTED', RECL=ireal*xdim*ydim) open(12,file='qclim',ACCESS='DIRECT',FORM='UNFORMATTED', RECL=ireal*xdim*ydim) open(13,file='ztopo', ACCESS='DIRECT',FORM='UNFORMATTED', RECL=ireal*xdim*ydim) open(14,file='moist',ACCESS='DIRECT',FORM='UNFORMATTED', RECL=ireal*xdim*ydim) open(15,file='solar',ACCESS='DIRECT',FORM='UNFORMATTED', RECL=ireal*ydim*ndays_yr) open(16,file='uwind',ACCESS='DIRECT',FORM='UNFORMATTED', RECL=ireal*xdim*ydim) open(17,file='vwind',ACCESS='DIRECT',FORM='UNFORMATTED', RECL=ireal*xdim*ydim) open(18,file='mldclim',ACCESS='DIRECT',FORM='UNFORMATTED', RECL=ireal*xdim*ydim) open(19,file='cloud',ACCESS='DIRECT',FORM='UNFORMATTED', RECL=ireal*xdim*ydim) open(20,file='glaci', ACCESS='DIRECT',FORM='UNFORMATTED', RECL=ireal*xdim*ydim) open(21,file='solar_scnr',ACCESS='DIRECT',FORM='UNFORMATTED', & & RECL=ireal*ydim*ndays_yr) open(22,file='co2mask', ACCESS='DIRECT',FORM='UNFORMATTED', RECL=ireal*xdim*ydim) ! read namelist read(10,numerics) read(10,physics) ! read fix data read(13,rec=1) z_topo where (z_topo < 0.) z_topo = -0.1 read(15,rec=1) swread read(20,rec=1) glacier if (log_exp .eq. 28) read(21,rec=1) swread2 if (log_exp .eq. 29) read(21,rec=1) swread2 if (log_exp .eq. 31) read(21,rec=1) swread2 if (log_exp .eq. 44) read(22,rec=1) co2_part_scn ! interpo SW on time steps do n=1,nstep_yr; jday = mod((n-1)/ndt_days,ndays_yr)+1 sw_solar_ctrl(:,n) = swread(:,jday) if (log_exp .eq. 28) sw_solar_scnr(:,n) = swread2(:,jday) if (log_exp .eq. 29) sw_solar_scnr(:,n) = swread2(:,jday) if (log_exp .eq. 31) sw_solar_scnr(:,n) = swread2(:,jday) end do ! read daily climate do n=1,ndays_yr read(12,rec=n) qread(:,:,n) end do do n=1,nstep_yr id = (n+1)/2 qclim(:,:,n) = qread(:,:,id) if ( mod(n,2) == 1 .and. n > 1 ) qclim(:,:,n) = (qread(:,:,id)+qread(:,:,id-1))/2 if ( mod(n,2) == 1 .and. n == 1 ) qclim(:,:,n) = (qread(:,:,id)+qread(:,:,ndays_yr))/2 end do ! read 730 timesteps climate do n=1,nstep_yr read(11,rec=n) tclim(:,:,n) tclim2 = tclim(:,:,n) if (log_exp .eq. 21) tclim(:,:,n) = tclim(:,:,n)+1.0 ! global +1K if (log_exp .eq. 22) tclim(:,:,n) = tclim(:,:,n)-1.0 ! global -1K if (log_exp .eq. 20) tclim(:,:,n) = tclim(:,:,n)-2.5 ! polar bias -1K if (log_exp .eq. 20) tclim(:,13:34,n) = tclim(:,13:34,n)+2.5 ! polar bias: no 40S-40N if (log_exp .eq. 204) tclim(:,:,n) = tclim(:,:,n)-2.5 ! polar bias -1K if (log_exp .eq. 204) tclim(:,13:34,n) = tclim(:,13:34,n)+2.5 ! polar bias: no 40S-40N if (log_exp .eq. 201) tclim(:,14:33,n) = tclim(:,14:33,n)-1 ! tropical bias 40S-40N if (log_exp .eq. 203) tclim(:,14:33,n) = tclim(:,14:33,n)-1 ! tropical bias 40S-40N ! SST -BIAS exp. with unchanged rel. humidity if (log_exp .eq. 22 .or. log_exp .eq. 21 .or. log_exp .eq. 20 .or. log_exp .eq. 201) then qs = 3.75e-3*exp(17.08085*(Tclim2-273.15)/(Tclim2-273.15+234.175)) qr = qclim(:,:,n)/qs qs = 3.75e-3*exp(17.08085*(Tclim(:,:,n)-273.15)/(Tclim(:,:,n)-273.15+234.175)) qclim(:,:,n)=qr*qs end if ! correct water vapor qs = 3.75e-3*exp(17.08085*(Tclim(:,:,n)-273.15)/(Tclim(:,:,n)-273.15+234.175)) where (qclim(:,:,n) <= 0.20*exp(-z_topo/4000.)*qs) qclim(:,:,n) = 0.20*exp(-z_topo/4000.)*qs where (qclim(:,:,n) >= 0.95*exp(-z_topo/4000.)*qs) qclim(:,:,n) = 0.95*exp(-z_topo/4000.)*qs ! sense exp: constant vapor = 70% humidity of 15C temperature = 19.6240/r_qviwv ! sense exp: constant vapor = 50% humidity of 15C temperature = 14.0171/r_qviwv if (log_exp .eq. 52 .or. log_exp .eq. 202 .or. log_exp .eq. 501) qclim(:,:,n) = 0.0052 ! qclim(:,:,n) = 0.72*exp(-z_topo/4000.)*qs ! TEST read(14,rec=1) swetclim(:,:,n) ! correct for inconsistcy with z_topo where(z_topo < 0. .and. swetclim(:,:,n) < 1.0) swetclim(:,:,n) = 1.0 read(16,rec=n) uclim(:,:,n) read(17,rec=n) vclim(:,:,n) read(18,rec=n) mldclim(:,:,n) where(mldclim(:,:,n) < 10.0) mldclim(:,:,n) = 10.0 where(mldclim(:,:,n) > 500.0) mldclim(:,:,n) = 500.0 ! cloud model read(19,rec=n) cldclim(:,:,n) where(cldclim(:,:,n) < 0.0) cldclim(:,:,n) = 0.0 where(cldclim(:,:,n) > 100.0) cldclim(:,:,n) = 100.0 end do ! cloud model cldclim=0.01*cldclim mldclim = max(30.,mldclim) ! adjust arctic mld ! define deep ocean temp. as min of Tsurf but > 3.0 Celcius forall (i=1:xdim, j=1:ydim) Toclim(i,j,:) = minval(Tclim(i,j,:)) end forall where (Toclim(:,:,1)-273.15 < -1.7) Toclim(:,:,1) = -1.7+273.15 forall (i=1:xdim, j=1:ydim) Toclim(i,j,:) = Toclim(i,j,1) end forall ! run model ! print*,'% log_exp: ',log_exp ! print*,'% log_proc: ',log_proc print*,'% time flux/control/scenario: ', time_flux, time_ctrl, time_scnr ! print*,'stop for test', z_topo(ipx,ipy),tclim(ipx,ipy,365),tclim(ipx,ipy,730) ! stop close(21) close(22) call greb_model END