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__//
", rp_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, &
336 & lbi, ubi, lbj, ubj, &
356 & lbi, ubi, lbj, ubj, &
367 & lbi, ubi, lbj, ubj, &
383 & lbi, ubi, lbj, ubj, &
391 & lbi, ubi, lbj, ubj, &
408# if !(defined EMINUSP || defined FORWARD_FLUXES || \
409 defined frc_coupling || defined srelaxation)
411 & lbi, ubi, lbj, ubj, &
419 & lbi, ubi, lbj, ubj, &
426# elif (defined EMINUSP || defined FORWARD_FLUXES || \
427 defined frc_coupling)
429 & lbi, ubi, lbj, ubj, &
437 & lbi, ubi, lbj, ubj, &
446# if defined SCORRECTION || defined SRELAXATION
456 & lbi, ubi, lbj, ubj, &
472 & lbi, ubi, lbj, ubj, &
480 & lbi, ubi, lbj, ubj, &
489# if defined BIOLOGY || defined SEDIMENT || defined T_PASSIVE
500 & lbi, ubi, lbj, ubj, &
501 &
forces(ng)%stfluxG(:,:,:,itrc), &
502 &
forces(ng)%stflux (:,:,itrc), &
508 & lbi, ubi, lbj, ubj, &
509 &
forces(ng)%stfluxG(:,:,:,itrc), &
510 &
forces(ng)%tl_stflux (:,:,itrc), &
520 & lbi, ubi, lbj, ubj, &
521 &
forces(ng)%btfluxG(:,:,:,itrc), &
522 &
forces(ng)%btflux (:,:,itrc), &
528 & lbi, ubi, lbj, ubj, &
529 &
forces(ng)%btfluxG(:,:,:,itrc), &
530 &
forces(ng)%tl_btflux(:,:,itrc), &
539# if !defined BULK_FLUXES || defined FORWARD_FLUXES || \
550 & lbi, ubi, lbj, ubj, &
557 & lbi, ubi, lbj, ubj, &
565 & lbi, ubi, lbj, ubj, &
572 & lbi, ubi, lbj, ubj, &
589 cff1=
forces(ng)%sustr(i,j)*
grid(ng)%CosAngler(i,j)+ &
590 &
forces(ng)%svstr(i,j)*
grid(ng)%SinAngler(i,j)
591 cff2=
forces(ng)%svstr(i,j)*
grid(ng)%CosAngler(i,j)- &
592 &
forces(ng)%sustr(i,j)*
grid(ng)%SinAngler(i,j)
593 forces(ng)%sustr(i,j)=cff1
594 forces(ng)%svstr(i,j)=cff2
596 forces(ng)%tl_sustr(i,j)=cff1
597 forces(ng)%tl_svstr(i,j)=cff2
604 & lbi, ubi, lbj, ubj, &
607 & lbi, ubi, lbj, ubj, &
611 & lbi, ubi, lbj, ubj, &
614 & lbi, ubi, lbj, ubj, &
621 & lbi, ubi, lbj, ubj, &
628 & lbi, ubi, lbj, ubj, &
640# if (defined BULK_FLUXES && !defined FORWARD_FLUXES) || \
641 defined ecosim || defined atm_press
653 & lbi, ubi, lbj, ubj, &
672 & lbi, ubi, lbj, ubj, &
688 &
grid(ng)%angler(i,j)
695 & lbi, ubi, lbj, ubj, &
701 & lbi, ubi, lbj, ubj, &
712 & lbi, ubi, lbj, ubj, &
722 & lbi, ubi, lbj, ubj, &
729# ifdef WAVES_TOP_PERIOD
732 & lbi, ubi, lbj, ubj, &
733 &
forces(ng)%Pwave_topG, &
739# ifdef WAVES_BOT_PERIOD
742 & lbi, ubi, lbj, ubj, &
743 &
forces(ng)%Pwave_botG, &
752 & lbi, ubi, lbj, ubj, &
759# if defined TKE_WAVEDISS
762 & lbi, ubi, lbj, ubj, &
763 &
forces(ng)%Wave_dissipG, &
764 &
forces(ng)%Wave_dissip, &
769# if defined SVENDSEN_ROLLER
772 & lbi, ubi, lbj, ubj, &
773 &
forces(ng)%Wave_breakG, &
774 &
forces(ng)%Wave_break, &
781# if defined ECOSIM && defined SOLVE3D
810 IF (
domain(ng)%SouthWest_Test(tile))
THEN
833 & 1,
nsrc(ng),
n(ng), &
834 &
sources(ng) % TsrcG(:,:,:,itrc), &
835 &
sources(ng) % Tsrc(:,:,itrc), &
854 IF (
domain(ng)%SouthWest_Test(tile))
THEN
927 IF (
domain(ng)%Western_Edge(tile))
THEN
930 IF (
boundary(ng)%zeta_west(j).le.cff)
THEN
949 IF (
domain(ng)%Eastern_Edge(tile))
THEN
952 IF (
boundary(ng)%zeta_east(j).le.cff)
THEN
971 IF (
domain(ng)%Southern_Edge(tile))
THEN
974 IF (
boundary(ng)%zeta_south(i).le.cff)
THEN
993 IF (
domain(ng)%Northern_Edge(tile))
THEN
996 IF (
boundary(ng)%zeta_north(i).le.cff)
THEN
1021 IF (
domain(ng)%SouthWest_Test(tile))
THEN
1161 IF (
domain(ng)%SouthWest_Test(tile))
THEN
1164 & 0,
mm(ng)+1,
n(ng), &
1171 & 0,
mm(ng)+1,
n(ng), &
1180 & 1,
mm(ng)+1,
n(ng), &
1187 & 1,
mm(ng)+1,
n(ng), &
1196 & 0,
mm(ng)+1,
n(ng), &
1203 & 0,
mm(ng)+1,
n(ng), &
1212 & 1,
mm(ng)+1,
n(ng), &
1219 & 1,
mm(ng)+1,
n(ng), &
1228 & 1,
lm(ng)+1,
n(ng), &
1235 & 1,
lm(ng)+1,
n(ng), &
1244 & 0,
lm(ng)+1,
n(ng), &
1251 & 0,
lm(ng)+1,
n(ng), &
1260 & 1,
lm(ng)+1,
n(ng), &
1267 & 1,
lm(ng)+1,
n(ng), &
1276 & 0,
lm(ng)+1,
n(ng), &
1283 & 0,
lm(ng)+1,
n(ng), &
1299 IF (
domain(ng)%SouthWest_Test(tile))
THEN
1303 & jlb, jub,
n(ng), 0,
mm(ng)+1,
n(ng), &
1304 &
boundary(ng) % tG_west(:,:,:,itrc), &
1305 &
boundary(ng) % t_west(:,:,itrc), &
1308 & __line__, myfile))
RETURN
1311 & jlb, jub,
n(ng), 0,
mm(ng)+1,
n(ng), &
1312 &
boundary(ng) % tG_west(:,:,:,itrc), &
1313 &
boundary(ng) % tl_t_west(:,:,itrc), &
1316 & __line__, myfile))
RETURN
1321 & jlb, jub,
n(ng), 0,
mm(ng)+1,
n(ng), &
1322 &
boundary(ng) % tG_east(:,:,:,itrc), &
1323 &
boundary(ng) % t_east(:,:,itrc), &
1326 & __line__, myfile))
RETURN
1329 & jlb, jub,
n(ng), 0,
mm(ng)+1,
n(ng), &
1330 &
boundary(ng) % tG_east(:,:,:,itrc), &
1331 &
boundary(ng) % tl_t_east(:,:,itrc), &
1334 & __line__, myfile))
RETURN
1339 & ilb, iub,
n(ng), 0,
lm(ng)+1,
n(ng), &
1340 &
boundary(ng) % tG_south(:,:,:,itrc), &
1341 &
boundary(ng) % t_south(:,:,itrc), &
1344 & __line__, myfile))
RETURN
1347 & ilb, iub,
n(ng), 0,
lm(ng)+1,
n(ng), &
1348 &
boundary(ng) % tG_south(:,:,:,itrc), &
1349 &
boundary(ng) % tl_t_south(:,:,itrc), &
1352 & __line__, myfile))
RETURN
1357 & ilb, iub,
n(ng), 0,
lm(ng)+1,
n(ng), &
1358 &
boundary(ng) % tG_north(:,:,:,itrc), &
1359 &
boundary(ng) % t_north(:,:,itrc), &
1362 & __line__, myfile))
RETURN
1365 & ilb, iub,
n(ng), 0,
lm(ng)+1,
n(ng), &
1366 &
boundary(ng) % tG_north(:,:,:,itrc), &
1367 &
boundary(ng) % tl_t_north(:,:,itrc), &
1370 & __line__, myfile))
RETURN
1387 & lbi, ubi, lbj, ubj, &
1404 & lbi, ubi, lbj, ubj, &
1405 &
clima(ng)%ubarclmG, &
1406 &
clima(ng)%ubarclm, &
1411 & lbi, ubi, lbj, ubj, &
1412 &
clima(ng)%vbarclmG, &
1413 &
clima(ng)%vbarclm, &
1430 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1431 &
clima(ng)%uclmG, &
1437 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1438 &
clima(ng)%vclmG, &
1459 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1460 &
clima(ng)%tclmG(:,:,:,:,ic), &
1461 &
clima(ng)%tclm (:,:,:,ic), &
1479 & lbi, ubi, lbj, ubj, &
1480 &
ocean(ng)%zetaG, &
1481 &
ocean(ng)%zeta(:,:,k), &
1498 & lbi, ubi, lbj, ubj, &
1499 &
ocean(ng)%ubarG, &
1500 &
ocean(ng)%ubar(:,:,k), &
1505 & lbi, ubi, lbj, ubj, &
1506 &
ocean(ng)%vbarG, &
1507 &
ocean(ng)%vbar(:,:,k), &
1518 & lbi, ubi, lbj, ubj, &
1519 &
ocean(ng)%rzetaG, &
1520 &
ocean(ng)%rzeta(:,:,k), &
1525 & lbi, ubi, lbj, ubj, &
1526 &
ocean(ng)%rubarG, &
1527 &
ocean(ng)%rubar(:,:,k), &
1532 & lbi, ubi, lbj, ubj, &
1533 &
ocean(ng)%rvbarG, &
1534 &
ocean(ng)%rvbar(:,:,k), &
1545 & lbi, ubi, lbj, ubj, &
1552 & lbi, ubi, lbj, ubj, &
1559 & lbi, ubi, lbj, ubj, &
1566 & lbi, ubi, lbj, ubj, &
1576 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1578 &
ocean(ng)%u(:,:,:,k), &
1583 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1585 &
ocean(ng)%v(:,:,:,k), &
1596 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1598 &
ocean(ng)%ru(:,:,:,k), &
1603 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1605 &
ocean(ng)%rv(:,:,:,k), &
1616 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1617 &
ocean(ng)%tG(:,:,:,:,itrc), &
1618 &
ocean(ng)%t(:,:,:,k,itrc), &
1624# ifdef FORWARD_MIXING
1630 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1631 &
mixing(ng)%AktG(:,:,:,:,itrc), &
1632 &
mixing(ng)%Akt(:,:,:,itrc), &
1638 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1645# if defined MY25_MIXING_NOT_YET || defined GLS_MIXING_NOT_YET
1651 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1653 &
mixing(ng)%tke(:,:,:,k), &
1662 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1664 &
mixing(ng)%gls(:,:,:,k), &
1672 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1681 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1687# ifdef GLS_MIXING_NOT_YET
1692 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1700# ifdef LMD_MIXING_NOT_YET
1705 & lbi, ubi, lbj, ubj, &
1712# ifdef LMD_BKPP_NOT_YET
1717 & lbi, ubi, lbj, ubj, &
1724# ifdef LMD_NONLOCAL_NOT_YET
1730 & lbi, ubi, lbj, ubj, 0,
n(ng), &
1731 &
mixing(ng)%ghatsG(:,:,:,:,itrc), &
1732 &
mixing(ng)%ghat(:,:,:,itrc), &
1739# if defined R4DVAR || defined R4DVAR_ANA_SENSITIVITY || \
1751 & lbi, ubi, lbj, ubj, &
1752 &
ocean(ng)%f_zetaG, &
1753 &
ocean(ng)%f_zeta, &
1762 & lbi, ubi, lbj, ubj, &
1763 &
ocean(ng)%f_ubarG, &
1764 &
ocean(ng)%f_ubar, &
1769 & lbi, ubi, lbj, ubj, &
1770 &
ocean(ng)%f_vbarG, &
1771 &
ocean(ng)%f_vbar, &
1779 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1786 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1796 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1797 &
ocean(ng)%f_tG(:,:,:,:,itrc), &
1798 &
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 rp_set_data_tile(ng, tile, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs)
subroutine rp_set_data(ng, tile)
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)