21 integer,
intent(in) :: ng, tile
25 character (len=*),
parameter :: MyFile = &
34 & lbi, ubi, lbj, ubj, &
35 & imins, imaxs, jmins, jmaxs)
45 & LBi, UBi, LBj, UBj, &
46 & IminS, ImaxS, JminS, JmaxS)
52# if defined FORWARD_READ && defined SOLVE3D
87 integer,
intent(in) :: ng, tile
88 integer,
intent(in) :: LBi, UBi, LBj, UBj
89 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
94 logical :: update = .false.
99 integer :: ILB, IUB, JLB, JUB
100 integer :: i, ic, itrc, j, k, my_tile
102 real(r8) :: cff, cff1, cff2
104 character (len=*),
parameter :: MyFile = &
105 & __FILE__//
", tl_set_data_tile"
107# include "set_bounds.h"
112 ilb=
bounds(ng)%LBi(my_tile)
113 iub=
bounds(ng)%UBi(my_tile)
114 jlb=
bounds(ng)%LBj(my_tile)
115 jub=
bounds(ng)%UBj(my_tile)
131 & lbi, ubi, lbj, ubj, &
139# if (defined BULK_FLUXES && !defined FORWARD_FLUXES) || \
141 (defined shortwave && defined
ana_srflux && defined albedo)
151 & lbi, ubi, lbj, ubj, &
159# if (defined BULK_FLUXES && !defined FORWARD_FLUXES) || \
161 (defined shortwave && defined
ana_srflux && defined albedo)
171 & lbi, ubi, lbj, ubj, &
189 & lbi, ubi, lbj, ubj, &
196# if defined DIURNAL_SRFLUX && !defined FORWARD_FLUXES
205# if (defined BULK_FLUXES && !defined FORWARD_FLUXES) && \
213 & lbi, ubi, lbj, ubj, &
220# if defined LONGWAVE_OUT && \
221 (defined bulk_fluxes &&
228 & lbi, ubi, lbj, ubj, &
235# if (defined BULK_FLUXES && !defined FORWARD_FLUXES) || \
246 & lbi, ubi, lbj, ubj, &
253 & lbi, ubi, lbj, ubj, &
269 cff1=
forces(ng)%Uwind(i,j)*
grid(ng)%CosAngler(i,j)+ &
270 &
forces(ng)%Vwind(i,j)*
grid(ng)%SinAngler(i,j)
271 cff2=
forces(ng)%Vwind(i,j)*
grid(ng)%CosAngler(i,j)- &
272 &
forces(ng)%Uwind(i,j)*
grid(ng)%SinAngler(i,j)
273 forces(ng)%Uwind(i,j)=cff1
274 forces(ng)%Vwind(i,j)=cff2
280 & lbi, ubi, lbj, ubj, &
283 & lbi, ubi, lbj, ubj, &
289 & lbi, ubi, lbj, ubj, &
300# if defined BULK_FLUXES && !defined FORWARD_FLUXES
310 & lbi, ubi, lbj, ubj, &
318# if !defined BULK_FLUXES || defined FORWARD_FLUXES
328 & lbi, ubi, lbj, ubj, &
347 & lbi, ubi, lbj, ubj, &
358 & lbi, ubi, lbj, ubj, &
374 & lbi, ubi, lbj, ubj, &
390# if !(defined EMINUSP || defined FORWARD_FLUXES || \
391 defined frc_coupling || defined srelaxation)
393 & lbi, ubi, lbj, ubj, &
399# elif (defined EMINUSP || defined FORWARD_FLUXES || \
400 defined frc_coupling)
402 & lbi, ubi, lbj, ubj, &
410# if defined SCORRECTION || defined SRELAXATION
420 & lbi, ubi, lbj, ubj, &
436 & lbi, ubi, lbj, ubj, &
444# if defined BIOLOGY || defined SEDIMENT || defined T_PASSIVE
455 & lbi, ubi, lbj, ubj, &
456 &
forces(ng)%stfluxG(:,:,:,itrc), &
457 &
forces(ng)%stflux (:,:,itrc), &
466 & lbi, ubi, lbj, ubj, &
467 &
forces(ng)%btfluxG(:,:,:,itrc), &
468 &
forces(ng)%btflux (:,:,itrc), &
476# if !defined BULK_FLUXES || defined FORWARD_FLUXES || \
487 & lbi, ubi, lbj, ubj, &
494 & lbi, ubi, lbj, ubj, &
510 cff1=
forces(ng)%sustr(i,j)*
grid(ng)%CosAngler(i,j)+ &
511 &
forces(ng)%svstr(i,j)*
grid(ng)%SinAngler(i,j)
512 cff2=
forces(ng)%svstr(i,j)*
grid(ng)%CosAngler(i,j)- &
513 &
forces(ng)%sustr(i,j)*
grid(ng)%SinAngler(i,j)
514 forces(ng)%sustr(i,j)=cff1
515 forces(ng)%svstr(i,j)=cff2
521 & lbi, ubi, lbj, ubj, &
524 & lbi, ubi, lbj, ubj, &
530 & lbi, ubi, lbj, ubj, &
541# if (defined BULK_FLUXES && !defined FORWARD_FLUXES) || \
542 defined ecosim || defined atm_press
554 & lbi, ubi, lbj, ubj, &
573 & lbi, ubi, lbj, ubj, &
589 &
grid(ng)%angler(i,j)
596 & lbi, ubi, lbj, ubj, &
602 & lbi, ubi, lbj, ubj, &
613 & lbi, ubi, lbj, ubj, &
623 & lbi, ubi, lbj, ubj, &
630# ifdef WAVES_TOP_PERIOD
633 & lbi, ubi, lbj, ubj, &
634 &
forces(ng)%Pwave_topG, &
640# ifdef WAVES_BOT_PERIOD
643 & lbi, ubi, lbj, ubj, &
644 &
forces(ng)%Pwave_botG, &
653 & lbi, ubi, lbj, ubj, &
660# if defined TKE_WAVEDISS
663 & lbi, ubi, lbj, ubj, &
664 &
forces(ng)%Wave_dissipG, &
665 &
forces(ng)%Wave_dissip, &
670# if defined SVENDSEN_ROLLER
673 & lbi, ubi, lbj, ubj, &
674 &
forces(ng)%Wave_breakG, &
675 &
forces(ng)%Wave_break, &
682# if defined ECOSIM && defined SOLVE3D
711 IF (
domain(ng)%SouthWest_Test(tile))
THEN
734 & 1,
nsrc(ng),
n(ng), &
735 &
sources(ng) % TsrcG(:,:,:,itrc), &
736 &
sources(ng) % Tsrc(:,:,itrc), &
755 IF (
domain(ng)%SouthWest_Test(tile))
THEN
800 IF (
domain(ng)%Western_Edge(tile))
THEN
803 IF (
boundary(ng)%zeta_west(j).le.cff)
THEN
818 IF (
domain(ng)%Eastern_Edge(tile))
THEN
821 IF (
boundary(ng)%zeta_east(j).le.cff)
THEN
836 IF (
domain(ng)%Southern_Edge(tile))
THEN
839 IF (
boundary(ng)%zeta_south(i).le.cff)
THEN
854 IF (
domain(ng)%Northern_Edge(tile))
THEN
857 IF (
boundary(ng)%zeta_north(i).le.cff)
THEN
878 IF (
domain(ng)%SouthWest_Test(tile))
THEN
962 IF (
domain(ng)%SouthWest_Test(tile))
THEN
965 & 0,
mm(ng)+1,
n(ng), &
974 & 1,
mm(ng)+1,
n(ng), &
983 & 0,
mm(ng)+1,
n(ng), &
992 & 1,
mm(ng)+1,
n(ng), &
1001 & 1,
lm(ng)+1,
n(ng), &
1010 & 0,
lm(ng)+1,
n(ng), &
1019 & 1,
lm(ng)+1,
n(ng), &
1028 & 0,
lm(ng)+1,
n(ng), &
1044 IF (
domain(ng)%SouthWest_Test(tile))
THEN
1048 & jlb, jub,
n(ng), 0,
mm(ng)+1,
n(ng), &
1049 &
boundary(ng) % tG_west(:,:,:,itrc), &
1050 &
boundary(ng) % t_west(:,:,itrc), &
1053 & __line__, myfile))
RETURN
1058 & jlb, jub,
n(ng), 0,
mm(ng)+1,
n(ng), &
1059 &
boundary(ng) % tG_east(:,:,:,itrc), &
1060 &
boundary(ng) % t_east(:,:,itrc), &
1063 & __line__, myfile))
RETURN
1068 & ilb, iub,
n(ng), 0,
lm(ng)+1,
n(ng), &
1069 &
boundary(ng) % tG_south(:,:,:,itrc), &
1070 &
boundary(ng) % t_south(:,:,itrc), &
1073 & __line__, myfile))
RETURN
1078 & ilb, iub,
n(ng), 0,
lm(ng)+1,
n(ng), &
1079 &
boundary(ng) % tG_north(:,:,:,itrc), &
1080 &
boundary(ng) % t_north(:,:,itrc), &
1083 & __line__, myfile))
RETURN
1100 & lbi, ubi, lbj, ubj, &
1117 & lbi, ubi, lbj, ubj, &
1118 &
clima(ng)%ubarclmG, &
1119 &
clima(ng)%ubarclm, &
1124 & lbi, ubi, lbj, ubj, &
1125 &
clima(ng)%vbarclmG, &
1126 &
clima(ng)%vbarclm, &
1143 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1144 &
clima(ng)%uclmG, &
1150 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1151 &
clima(ng)%vclmG, &
1172 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1173 &
clima(ng)%tclmG(:,:,:,:,ic), &
1174 &
clima(ng)%tclm (:,:,:,ic), &
1192 & lbi, ubi, lbj, ubj, &
1193 &
ocean(ng)%zetaG, &
1194 &
ocean(ng)%zeta(:,:,k), &
1211 & lbi, ubi, lbj, ubj, &
1212 &
ocean(ng)%ubarG, &
1213 &
ocean(ng)%ubar(:,:,k), &
1218 & lbi, ubi, lbj, ubj, &
1219 &
ocean(ng)%vbarG, &
1220 &
ocean(ng)%vbar(:,:,k), &
1231 & lbi, ubi, lbj, ubj, &
1232 &
ocean(ng)%rzetaG, &
1233 &
ocean(ng)%rzeta(:,:,k), &
1238 & lbi, ubi, lbj, ubj, &
1239 &
ocean(ng)%rubarG, &
1240 &
ocean(ng)%rubar(:,:,k), &
1245 & lbi, ubi, lbj, ubj, &
1246 &
ocean(ng)%rvbarG, &
1247 &
ocean(ng)%rvbar(:,:,k), &
1258 & lbi, ubi, lbj, ubj, &
1265 & lbi, ubi, lbj, ubj, &
1272 & lbi, ubi, lbj, ubj, &
1279 & lbi, ubi, lbj, ubj, &
1289 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1291 &
ocean(ng)%u(:,:,:,k), &
1296 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1298 &
ocean(ng)%v(:,:,:,k), &
1309 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1311 &
ocean(ng)%ru(:,:,:,k), &
1316 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1318 &
ocean(ng)%rv(:,:,:,k), &
1329 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1330 &
ocean(ng)%tG(:,:,:,:,itrc), &
1331 &
ocean(ng)%t(:,:,:,k,itrc), &
1337# ifdef FORWARD_MIXING
1343 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1344 &
mixing(ng)%AktG(:,:,:,:,itrc), &
1345 &
mixing(ng)%Akt(:,:,:,itrc), &
1351 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1358# if defined MY25_MIXING_NOT_YET || defined GLS_MIXING_NOT_YET
1364 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1366 &
mixing(ng)%tke(:,:,:,k), &
1375 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1377 &
mixing(ng)%gls(:,:,:,k), &
1385 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1394 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1400# ifdef GLS_MIXING_NOT_YET
1405 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1413# ifdef LMD_MIXING_NOT_YET
1418 & lbi, ubi, lbj, ubj, &
1425# ifdef LMD_BKPP_NOT_YET
1430 & lbi, ubi, lbj, ubj, &
1437# ifdef LMD_NONLOCAL_NOT_YET
1443 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1444 &
mixing(ng)%ghatsG(:,:,:,:,itrc), &
1445 &
mixing(ng)%ghat(:,:,:,itrc), &
1452# ifdef WEAK_CONSTRAINT
1463 & lbi, ubi, lbj, ubj, &
1464 &
ocean(ng)%f_zetaG, &
1465 &
ocean(ng)%f_zeta, &
1474 & lbi, ubi, lbj, ubj, &
1475 &
ocean(ng)%f_ubarG, &
1476 &
ocean(ng)%f_ubar, &
1481 & lbi, ubi, lbj, ubj, &
1482 &
ocean(ng)%f_vbarG, &
1483 &
ocean(ng)%f_vbar, &
1491 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1498 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1508 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1509 &
ocean(ng)%f_tG(:,:,:,:,itrc), &
1510 &
ocean(ng)%f_t(:,:,:,itrc), &
subroutine ana_spinning(ng, tile, model)
subroutine ana_fsobc(ng, tile, model)
subroutine ana_wwave(ng, tile, model)
subroutine ana_sst(ng, tile, model)
subroutine ana_m3obc(ng, tile, model)
subroutine ana_dqdsst(ng, tile, model)
subroutine ana_tclima(ng, tile, model)
subroutine ana_btflux(ng, tile, model, itrc)
subroutine ana_ssh(ng, tile, model)
subroutine ana_m2obc(ng, tile, model)
subroutine ana_tobc(ng, tile, model)
subroutine ana_sss(ng, tile, model)
subroutine ana_psource(ng, tile, model)
subroutine ana_winds(ng, tile, model)
subroutine ana_srflux(ng, tile, model)
subroutine ana_smflux(ng, tile, model)
subroutine ana_pair(ng, tile, model)
subroutine ana_m2clima(ng, tile, model)
subroutine ana_tair(ng, tile, model)
subroutine ana_m3clima(ng, tile, model)
subroutine ana_stflux(ng, tile, model, itrc)
subroutine ana_rain(ng, tile, model)
subroutine ana_specir(ng, tile, model)
subroutine ana_humid(ng, tile, model)
subroutine ana_cloud(ng, tile, model)
subroutine mp_boundary(ng, model, imin, imax, lbi, ubi, lbk, ubk, update, a)
subroutine exchange_r2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine exchange_u2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
subroutine exchange_v2d_tile(ng, tile, lbi, ubi, lbj, ubj, a)
type(t_boundary), dimension(:), allocatable boundary
type(t_clima), dimension(:), allocatable clima
type(t_coupling), dimension(:), allocatable coupling
type(t_forces), dimension(:), allocatable forces
type(t_grid), dimension(:), allocatable grid
type(t_mixing), dimension(:), allocatable mixing
integer, dimension(2) iddiff
integer, dimension(4) idu3bc
integer, dimension(4) idzbry
integer, dimension(4) idu2bc
logical, dimension(:,:,:), allocatable linfo
integer, dimension(:), allocatable idrtrc
integer, dimension(:), allocatable idtbot
integer, dimension(:), allocatable idtsur
integer, dimension(:), allocatable idtclm
integer, dimension(:), allocatable idtvar
integer, dimension(:), allocatable istvar
integer, dimension(4) idv3bc
integer, dimension(:), allocatable idttlf
integer, dimension(2) idghat
integer, dimension(:,:,:), allocatable iinfo
integer, dimension(4) idv2bc
integer, dimension(:,:), allocatable idtbry
type(t_ocean), dimension(:), allocatable ocean
integer, dimension(:), allocatable n
type(t_bounds), dimension(:), allocatable bounds
type(t_lbc), dimension(:,:,:), allocatable tl_lbc
type(t_domain), dimension(:), allocatable domain
integer, dimension(:), allocatable lm
integer, dimension(:), allocatable nt
integer, dimension(:), allocatable mm
logical, dimension(:), allocatable luvsrc
logical, dimension(:,:), allocatable ltracersrc
real(r8), dimension(:), allocatable dcrit
logical, dimension(:), allocatable lprocessobc
logical, dimension(:), allocatable ewperiodic
logical, dimension(:), allocatable nsperiodic
logical, dimension(:), allocatable lm3clm
logical, dimension(:), allocatable lsshclm
logical, dimension(:), allocatable frequentimpulse
logical, dimension(:), allocatable lwsrc
integer, parameter isouth
logical, dimension(:), allocatable lm2clm
logical, dimension(:,:), allocatable ltracerclm
integer, parameter inorth
type(t_sources), dimension(:), allocatable sources
integer, dimension(:), allocatable nsrc
subroutine mp_exchange2d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, nghost, ew_periodic, ns_periodic, a, b, c, d)
subroutine mp_exchange3d(ng, tile, model, nvar, lbi, ubi, lbj, ubj, lbk, ubk, nghost, ew_periodic, ns_periodic, a, b, c, d)
subroutine set_2dfld_tile(ng, tile, model, ifield, lbi, ubi, lbj, ubj, finp, fout, update, setbc)
subroutine set_3dfld_tile(ng, tile, model, ifield, lbi, ubi, lbj, ubj, lbk, ubk, finp, fout, update, setbc)
logical function, public founderror(flag, noerr, line, routine)
subroutine set_ngfld(ng, model, ifield, lbi, ubi, ubj, istr, iend, jrec, finp, fout, update)
recursive subroutine wclock_off(ng, model, region, line, routine)
recursive subroutine wclock_on(ng, model, region, line, routine)
subroutine tl_set_data_tile(ng, tile, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs)
subroutine tl_set_data(ng, tile)