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)
50# if defined HYPOXIA_SRM || defined RED_TIDE
87 integer,
intent(in) :: ng, tile
88 integer,
intent(in) :: LBi, UBi, LBj, UBj
89 integer,
intent(in) :: IminS, ImaxS, JminS, JmaxS
93 logical :: Lprocess, SetBC
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__//
", 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)
128 IF (
domain(ng)%SouthWest_Test(tile))
THEN
154 & 1,
nsrc(ng),
n(ng), &
155 &
sources(ng) % TsrcG(:,:,:,itrc), &
156 &
sources(ng) % Tsrc(:,:,itrc), &
171# if defined FOUR_DVAR && \
172 defined bulk_fluxes && defined prior_bulk_fluxes
198# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
201 & lbi, ubi, lbj, ubj, &
210# if defined BULK_FLUXES || defined ECOSIM || \
211 (defined shortwave && defined
ana_srflux && defined albedo)
218# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
221 & lbi, ubi, lbj, ubj, &
230# if defined BULK_FLUXES || defined ECOSIM || \
231 (defined shortwave && defined
ana_srflux && defined albedo)
238# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
241 & lbi, ubi, lbj, ubj, &
256# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
259 & lbi, ubi, lbj, ubj, &
266# ifdef DIURNAL_SRFLUX
277# if defined RED_TIDE && defined DAILY_SHORTWAVE
283 & lbi, ubi, lbj, ubj, &
284 &
forces(ng)%srflxG_avg, &
290# if defined BULK_FLUXES && \
292 ( (defined frc_coupling && defined time_interp) || \
299 & lbi, ubi, lbj, ubj, &
307# if defined LONGWAVE_OUT && defined BULK_FLUXES && \
308 ( (defined frc_coupling && defined time_interp) || \
315 & lbi, ubi, lbj, ubj, &
323# if defined BULK_FLUXES || defined ECOSIM
330# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
333 & lbi, ubi, lbj, ubj, &
340 & lbi, ubi, lbj, ubj, &
356 cff1=
forces(ng)%Uwind(i,j)*
grid(ng)%CosAngler(i,j)+ &
357 &
forces(ng)%Vwind(i,j)*
grid(ng)%SinAngler(i,j)
358 cff2=
forces(ng)%Vwind(i,j)*
grid(ng)%CosAngler(i,j)- &
359 &
forces(ng)%Uwind(i,j)*
grid(ng)%SinAngler(i,j)
360 forces(ng)%Uwind(i,j)=cff1
361 forces(ng)%Vwind(i,j)=cff2
367 & lbi, ubi, lbj, ubj, &
370 & lbi, ubi, lbj, ubj, &
376 & lbi, ubi, lbj, ubj, &
395# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
398 & lbi, ubi, lbj, ubj, &
413# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
416 & lbi, ubi, lbj, ubj, &
433 & lbi, ubi, lbj, ubj, &
444 & lbi, ubi, lbj, ubj, &
458 & lbi, ubi, lbj, ubj, &
473# if !(defined BULK_FLUXES || defined EMINUSP || \
474 defined frc_coupling)
479 & lbi, ubi, lbj, ubj, &
485# elif defined BULK_FLUXES && !defined EMINUSP
491 & lbi, ubi, lbj, ubj, &
500# if defined SCORRECTION || defined SRELAXATION
508 & lbi, ubi, lbj, ubj, &
522 & lbi, ubi, lbj, ubj, &
530# if defined BIOLOGY || defined SEDIMENT || defined T_PASSIVE
539 & lbi, ubi, lbj, ubj, &
540 &
forces(ng)%stfluxG(:,:,:,itrc), &
541 &
forces(ng)%stflux (:,:,itrc), &
549 & lbi, ubi, lbj, ubj, &
550 &
forces(ng)%btfluxG(:,:,:,itrc), &
551 &
forces(ng)%btflux (:,:,itrc), &
565# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
568 & lbi, ubi, lbj, ubj, &
575 & lbi, ubi, lbj, ubj, &
591 cff1=
forces(ng)%sustr(i,j)*
grid(ng)%CosAngler(i,j)+ &
592 &
forces(ng)%svstr(i,j)*
grid(ng)%SinAngler(i,j)
593 cff2=
forces(ng)%svstr(i,j)*
grid(ng)%CosAngler(i,j)- &
594 &
forces(ng)%sustr(i,j)*
grid(ng)%SinAngler(i,j)
595 forces(ng)%sustr(i,j)=cff1
596 forces(ng)%svstr(i,j)=cff2
602 & lbi, ubi, lbj, ubj, &
605 & lbi, ubi, lbj, ubj, &
611 & lbi, ubi, lbj, ubj, &
622# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
629# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
634 & lbi, ubi, lbj, ubj, &
652 & lbi, ubi, lbj, ubj, &
662 & lbi, ubi, lbj, ubj, &
672 & lbi, ubi, lbj, ubj, &
682 & lbi, ubi, lbj, ubj, &
692 & lbi, ubi, lbj, ubj, &
700# ifdef WAVES_TOP_PERIOD
702 & lbi, ubi, lbj, ubj, &
703 &
forces(ng)%Pwave_topG, &
710# ifdef WAVES_BOT_PERIOD
712 & lbi, ubi, lbj, ubj, &
713 &
forces(ng)%Pwave_botG, &
722 & lbi, ubi, lbj, ubj, &
723 &
forces(ng)%Uwave_rmsG, &
730# if defined WAVES_DISS
732 & lbi, ubi, lbj, ubj, &
733 &
forces(ng)%Dissip_breakG, &
734 &
forces(ng)%Dissip_break, &
739 & lbi, ubi, lbj, ubj, &
740 &
forces(ng)%Dissip_wcapG, &
741 &
forces(ng)%Dissip_wcap, &
747# if defined ROLLER_SVENDSEN
749 & lbi, ubi, lbj, ubj, &
750 &
forces(ng)%Wave_breakG, &
751 &
forces(ng)%Wave_break, &
759# if defined ECOSIM && defined SOLVE3D
779# ifdef ANA_RESPIRATION
783 & lbi, ubi, lbj, ubj, 1,
n(ng), &
784 &
ocean(ng)%respirationG, &
785 &
ocean(ng)%respiration, &
796 & lbi, ubi, lbj, ubj, 1,
n(ng), &
797 &
ocean(ng)%DIN_obsG, &
798 &
ocean(ng)%DIN_obs, &
803#if defined FOUR_DVAR && \
804 defined bulk_fluxes && defined prior_bulk_fluxes
817 IF (.not.lprocess)
THEN
822 & lbi, ubi, lbj, ubj, &
829 & lbi, ubi, lbj, ubj, &
842 & lbi, ubi, lbj, ubj, &
855 & lbi, ubi, lbj, ubj, &
862# if defined SALINITY && !defined ANA_SSFLUX
867 & lbi, ubi, lbj, ubj, &
887 IF (
domain(ng)%SouthWest_Test(tile))
THEN
932 IF (
domain(ng)%Western_Edge(tile))
THEN
935 IF (
boundary(ng)%zeta_west(j).le.cff)
THEN
950 IF (
domain(ng)%Eastern_Edge(tile))
THEN
953 IF (
boundary(ng)%zeta_east(j).le.cff)
THEN
968 IF (
domain(ng)%Southern_Edge(tile))
THEN
971 IF (
boundary(ng)%zeta_south(i).le.cff)
THEN
986 IF (
domain(ng)%Northern_Edge(tile))
THEN
989 IF (
boundary(ng)%zeta_north(i).le.cff)
THEN
1010 IF (
domain(ng)%SouthWest_Test(tile))
THEN
1094 IF (
domain(ng)%SouthWest_Test(tile))
THEN
1097 & 0,
mm(ng)+1,
n(ng), &
1106 & 1,
mm(ng)+1,
n(ng), &
1115 & 0,
mm(ng)+1,
n(ng), &
1124 & 1,
mm(ng)+1,
n(ng), &
1133 & 1,
lm(ng)+1,
n(ng), &
1142 & 0,
lm(ng)+1,
n(ng), &
1151 & 1,
lm(ng)+1,
n(ng), &
1160 & 0,
lm(ng)+1,
n(ng), &
1176 IF (
domain(ng)%SouthWest_Test(tile))
THEN
1180 & jlb, jub,
n(ng), 0,
mm(ng)+1,
n(ng), &
1181 &
boundary(ng) % tG_west(:,:,:,itrc), &
1182 &
boundary(ng) % t_west(:,:,itrc), &
1185 & __line__, myfile))
RETURN
1190 & jlb, jub,
n(ng), 0,
mm(ng)+1,
n(ng), &
1191 &
boundary(ng) % tG_east(:,:,:,itrc), &
1192 &
boundary(ng) % t_east(:,:,itrc), &
1195 & __line__, myfile))
RETURN
1200 & ilb, iub,
n(ng), 0,
lm(ng)+1,
n(ng), &
1201 &
boundary(ng) % tG_south(:,:,:,itrc), &
1202 &
boundary(ng) % t_south(:,:,itrc), &
1205 & __line__, myfile))
RETURN
1210 & ilb, iub,
n(ng), 0,
lm(ng)+1,
n(ng), &
1211 &
boundary(ng) % tG_north(:,:,:,itrc), &
1212 &
boundary(ng) % t_north(:,:,itrc), &
1215 & __line__, myfile))
RETURN
1234 & lbi, ubi, lbj, ubj, &
1249 & lbi, ubi, lbj, ubj, &
1250 &
clima(ng)%ubarclmG, &
1251 &
clima(ng)%ubarclm, &
1256 & lbi, ubi, lbj, ubj, &
1257 &
clima(ng)%vbarclmG, &
1258 &
clima(ng)%vbarclm, &
1273 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1274 &
clima(ng)%uclmG, &
1280 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1281 &
clima(ng)%vclmG, &
1300 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1301 &
clima(ng)%tclmG(:,:,:,:,ic), &
1302 &
clima(ng)%tclm (:,:,:,ic), &
1310# if defined NLM_OUTER || \
1311 defined rbl4dvar || \
1312 defined rbl4dvar_ana_sensitivity || \
1313 defined rbl4dvar_fct_sensitivity || \
1325 & lbi, ubi, lbj, ubj, &
1326 &
ocean(ng)%zetaG, &
1327 &
ocean(ng)%f_zeta, &
1336 & lbi, ubi, lbj, ubj, &
1337 &
ocean(ng)%ubarG, &
1338 &
ocean(ng)%f_ubar, &
1343 & lbi, ubi, lbj, ubj, &
1344 &
ocean(ng)%vbarG, &
1345 &
ocean(ng)%f_vbar, &
1354 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1361 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1371 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1372 &
ocean(ng)%tG(:,:,:,:,itrc), &
1373 &
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_respiration(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_forces), dimension(:), allocatable forces
type(t_grid), dimension(:), allocatable grid
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 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 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_data_tile(ng, tile, lbi, ubi, lbj, ubj, imins, imaxs, jmins, jmaxs)
subroutine 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)