54 integer (kind=int_kind) :: &
61 real (kind=
dbl_kind),
dimension(:,:),
allocatable,
save:: &
64 character (char_len_long) :: &
82 integer (kind=int_kind) :: &
86 real (kind=
dbl_kind),
dimension(:,:,:),
allocatable,
save :: &
101 character (char_len) :: &
107 character(char_len_long) :: &
112 integer (kind=int_kind),
parameter :: &
118 logical (kind=log_kind) :: &
121 integer (kind=int_kind) :: &
127 logical (kind=log_kind) :: &
516 integer (kind=int_kind),
intent(in) :: &
528 daymid(1:13) = 14._dbl_kind
529 daymid(0) = -17._dbl_kind
549 c1intp = (t2 - tt) / (t2 - t1)
577 integer (kind=int_kind),
intent(in) :: &
581 real (kind=
dbl_kind),
intent(in) :: &
588 real (kind=
dbl_kind),
parameter :: &
637 character (char_len_long),
intent(inout) :: data_file
641 integer (kind=int_kind),
intent(in) :: yr
643 character (char_len_long) :: tmpname
645 integer (kind=int_kind) :: i
647 i = index(data_file,
'.dat') - 5
649 write(data_file,
'(a,i4.4,a)') tmpname(1:i), yr,
'.dat' 680 integer (kind=int_kind),
intent(in) :: &
686 trim(
atm_data_dir)//
'ISCCPM/MONTHLY/RADFLX/swdn.1996.dat' 690 trim(
atm_data_dir)//
'ISCCPM/MONTHLY/RADFLX/cldf.1996.dat' 719 write (nu_diag,*)
'Initial atmospheric data files:' 759 integer (kind=int_kind),
intent(in) :: &
788 write (nu_diag,*)
'Forcing data year = ',
fyear 789 write (nu_diag,*)
'Atmospheric data files:' 822 integer (kind=int_kind) ::&
833 logical (kind=log_kind) :: readm, read6
847 imx = mod(
month+maxrec-2,maxrec) + 1
848 ipx = mod(
month, maxrec) + 1
849 if (
mday >= midmonth) imx = 99
850 if (
mday < midmonth) ipx = 99
858 if (
mday < midmonth) recslot = 2
865 if (
istep==1 .or. (
mday==midmonth .and.
sec==0)) readm = .true.
894 imx = mod(recnum+maxrec-2,maxrec) + 1
895 ixx = mod(recnum-1, maxrec) + 1
957 integer (kind=int_kind) :: &
969 logical (kind=log_kind) :: readm, read6
983 imx = mod(
month+maxrec-2,maxrec) + 1
984 ipx = mod(
month, maxrec) + 1
985 if (
mday >= midmonth) imx = 99
986 if (
mday < midmonth) ipx = 99
994 if (
mday < midmonth) recslot = 2
1001 if (
istep==1 .or. (
mday==midmonth .and.
sec==0)) readm = .true.
1027 imx = mod(recnum+maxrec-2,maxrec) + 1
1028 ixx = mod(recnum-1, maxrec) + 1
1062 qa(i,j) =
qa(i,j) *
hm(i,j)
1129 integer (kind=int_kind) :: i,j
1133 deg2rad_i = pi/180._dbl_kind
1136 hour_angle = (
c12 - solar_time)*pi/
c12 1137 declin = 23.44_dbl_kind*cos((172._dbl_kind-
yday) &
1139 cosz = sin(
tlat(i,j))*sin(declin) &
1140 + cos(
tlat(i,j))*cos(declin)*cos(hour_angle)
1141 cosz = max(cosz,
c0i)
1142 e_i = 1.e5_dbl_kind*
qa(i,j) &
1143 /(0.622_dbl_kind + 0.378_dbl_kind*
qa(i,j))
1144 d_i = (cosz+2.7_dbl_kind)*e_i*1.e-5_dbl_kind+1.085_dbl_kind*cosz+
p1 1145 sw0 = 1353._dbl_kind*cosz**2/d_i
1181 dimension(ilo:ihi,jlo:jhi) :: &
1185 work =
c2i + (0.7859_dbl_kind + 0.03477_dbl_kind*work) &
1186 /(
c1i + 0.00412_dbl_kind*work) &
1187 + 0.00422_dbl_kind*work
1190 work = max(work,
puny)
1192 work = 0.622_dbl_kind*work/(1.e5_dbl_kind - 0.378_dbl_kind*work)
1224 integer (kind=int_kind) :: i, j
1227 , fcc,sstk,rtea,qlwm,ptem
1253 qa(i,j) =
qa(i,j) * 0.94_dbl_kind
1254 fsw(i,j) =
fsw(i,j) * 0.92_dbl_kind
1274 swvdr(i,j) =
fsw(i,j)*(.28_dbl_kind)
1275 swvdf(i,j) =
fsw(i,j)*(.24_dbl_kind)
1276 swidr(i,j) =
fsw(i,j)*(.31_dbl_kind)
1277 swidf(i,j) =
fsw(i,j)*(.17_dbl_kind)
1281 & * (
c1i - 0.261_dbl_kind* &
1282 & exp(-7.77e-4_dbl_kind*(
tffresh -
tair(i,j))**2)) &
1283 & * (
c1i + 0.275_dbl_kind*
cldf(i,j))
1343 swvdr(i,j) =
fsw(i,j)*(.28_dbl_kind)
1344 swvdf(i,j) =
fsw(i,j)*(.24_dbl_kind)
1345 swidr(i,j) =
fsw(i,j)*(.31_dbl_kind)
1346 swidf(i,j) =
fsw(i,j)*(.17_dbl_kind)
1350 fcc =
c1i - 0.8_dbl_kind *
cldf(i,j)
1353 rtea = sqrt(
c1000*
qa(i,j) / (0.622_dbl_kind &
1354 + 0.378_dbl_kind*
qa(i,j)))
1356 qlwm = ptem * ptem * ptem * &
1357 ( ptem*(0.39_dbl_kind-0.05_dbl_kind*rtea)*fcc &
1397 CALL fatal_error(
"ICE_LONGWAVE_TYPE should be PW or RM")
1424 real (kind=
dbl_kind),
dimension(ilo:ihi,jlo:jhi,2),
intent(in) ::&
1427 real (kind=
dbl_kind),
dimension(ilo:ihi,jlo:jhi),
intent(out) ::&
1432 integer (kind=int_kind) :: i,j
1436 field(i,j) =
c1intp * field_data(i,j,1) &
1437 +
c2intp * field_data(i,j,2)
1543 integer (kind=int_kind) :: i, j, nbits, k
1603 integer (kind=int_kind) :: &
1610 real (kind=
dbl_kind),
dimension(ilo:ihi,jlo:jhi) ::&
1613 logical (kind=log_kind) :: readm
1648 imx = mod(
month+maxrec-2,maxrec) + 1
1649 ipx = mod(
month, maxrec) + 1
1650 if (
mday >= midmonth) imx = 99
1651 if (
mday < midmonth) ipx = 99
1762 integer (kind=int_kind) :: &
1767 character(len=16) ::&
1770 'T',
'S',
'hblt',
'U',
'V', &
1771 'dhdx',
'dhdy',
'qdp' /
1773 integer (kind=int_kind) ::&
1779 integer (kind=int_kind) :: &
1906 integer (kind=int_kind) :: &
1914 real (kind=
dbl_kind),
dimension(ilo:ihi,jlo:jhi) :: &
1929 imx = mod(
month+maxrec-2,maxrec) + 1
1930 ipx = mod(
month, maxrec) + 1
1931 if (
mday >= midmonth) imx = 99
1932 if (
mday < midmonth) ipx = 99
character(char_len) sst_data_type
real(kind=dbl_kind), dimension(:,:,:), allocatable, save fsw_data
real(kind=dbl_kind), parameter c1000
integer(kind=int_kind) ycycle
character(char_len_long) sss_file
real(kind=dbl_kind), parameter secday
real(kind=dbl_kind), dimension(:,:), allocatable, save cldf
character(char_len) sss_data_type
subroutine interp_coeff(recnum, recslot, secint)
character(char_len_long) flw_file
character(char_len_long) oceanmixed_file
integer, parameter dbl_kind
integer(kind=int_kind) sec
logical(kind=log_kind) restore_sst
integer(kind=int_kind) month
character(char_len_long) rhoa_file
integer(kind=int_kind) ihi
real(kind=dbl_kind), dimension(:,:), allocatable, save fsw
real(kind=dbl_kind), parameter c0i
character(char_len) precip_units
character(len=80) ice_longwave_type
subroutine getflux_ocn_ncar
integer(kind=int_kind) oldrecnum
character(char_len_long) atm_data_dir
real(kind=dbl_kind), dimension(:,:), allocatable tlat
real(kind=dbl_kind), parameter c10i
real(kind=dbl_kind), dimension(:,:), allocatable, save swvdf
real(kind=dbl_kind) c1intp
character(char_len_long) vwind_file
real(kind=dbl_kind) trest
real(kind=dbl_kind), dimension(:,:), allocatable, save rhoa
real(kind=dbl_kind), dimension(:,:), allocatable, save pott
logical(kind=log_kind) dbug
integer(kind=int_kind) mday
real(kind=dbl_kind), parameter stefan_boltzmann
integer(kind=int_kind) istep
character(char_len_long) humid_file
character(char_len) atm_data_type
real(kind=dbl_kind) ftime
real(kind=dbl_kind), dimension(:,:), allocatable anglet
real(kind=dbl_kind), parameter c4i
real(kind=dbl_kind), dimension(:,:,:), allocatable, save tair_data
subroutine interpolate_data(field_data, field)
real(kind=dbl_kind), dimension(:,:), allocatable, save flw
subroutine interp_coeff_monthly(recslot)
real(kind=dbl_kind), dimension(:,:,:), allocatable, save cldf_data
character(char_len_long) ocn_data_dir
integer(kind=int_kind) trestore
integer(kind=int_kind) fyear_final
integer(kind=int_kind) jlo
subroutine prepare_forcing
real(kind=dbl_kind), dimension(:,:), allocatable, save sst
subroutine ncar_files(yr)
character(char_len_long) uwind_file
character(char_len_long) height_file
real(kind=dbl_kind), dimension(:,:), allocatable, save vatm
real(kind=dbl_kind), parameter emissivity
integer(kind=int_kind) ilo
real(kind=dbl_kind), parameter p5
real(kind=dbl_kind), parameter puny
real(kind=dbl_kind), parameter tffresh
integer(kind=int_kind), parameter nfld
integer(kind=int_kind) jhi
real(kind=dbl_kind) c2intp
real(kind=dbl_kind), parameter c12
integer(kind=int_kind) fyear_init
real(kind=dbl_kind), dimension(:,:), allocatable worka
real(kind=dbl_kind), dimension(:,:), allocatable, target, save aice
real(kind=dbl_kind), dimension(:,:,:), allocatable, save vatm_data
real(kind=dbl_kind), parameter c2i
real(kind=dbl_kind), dimension(:,:,:), allocatable, save sst_data
real(kind=dbl_kind), dimension(:,:,:), allocatable, save uatm_data
real(kind=dbl_kind), dimension(:,:), allocatable, save uatm
integer(kind=int_kind), save my_task
real(kind=dbl_kind), dimension(:,:), allocatable, save swvdr
real(kind=dbl_kind), parameter p1
character(char_len_long) sst_file
real(kind=dbl_kind), dimension(:,:,:), allocatable, save rhoa_data
real(kind=dbl_kind), dimension(:,:), allocatable, save zlvl
subroutine compute_shortwave
real(kind=dbl_kind), dimension(:,:), allocatable hm
real(kind=dbl_kind), dimension(:,:), allocatable, save fsnow
character(char_len_long) tair_file
real(kind=dbl_kind), parameter c1i
subroutine fatal_error(ER1, ER2, ER3, ER4)
real(kind=dbl_kind), dimension(:,:), allocatable, save qa
real(kind=dbl_kind), dimension(:,:), allocatable, save swidf
real(kind=dbl_kind), parameter c365
real(kind=dbl_kind), dimension(:,:), allocatable work_g1
real(kind=dbl_kind), dimension(:,:,:), allocatable, save fsnow_data
real(kind=dbl_kind), dimension(:,:,:), allocatable, save flw_data
real(kind=dbl_kind), dimension(:,:,:), allocatable, save zlvl_data
character(char_len_long) rain_file
integer(kind=int_kind) fyear
real(kind=dbl_kind), dimension(:,:), allocatable, save tair
real(kind=dbl_kind), parameter p6
character(char_len_long) pott_file
real(kind=dbl_kind), dimension(:,:), allocatable tlon
real(kind=dbl_kind), dimension(:,:), allocatable, save swidr
integer(kind=int_kind), save master_task
real(kind=dbl_kind), dimension(:,:,:), allocatable, save pott_data
subroutine getflux_ocn_clim
integer(kind=int_kind), dimension(13) daycal
subroutine file_year(data_file, yr)
real(kind=dbl_kind), dimension(:,:), allocatable, target, save tsfc
character(char_len_long) fsw_file
real(kind=dbl_kind), dimension(:,:,:), allocatable, save qa_data
subroutine ncar_bulk_data
real(kind=dbl_kind), dimension(:,:,:), allocatable, save sss_data
subroutine getflux_ocn_ncar_init