47
48
50# if defined HYPOXIA_SRM || defined RED_TIDE
52# endif
63
64# ifdef ANALYTICAL
66# endif
69# ifdef SOLVE3D
71# endif
72# ifdef DISTRIBUTE
73# ifdef WET_DRY
75# endif
77# ifdef SOLVE3D
79# endif
80# endif
82
83 implicit none
84
85
86
87 integer, intent(in) :: ng, tile
88 integer, intent(in) :: LBi, UBi, LBj, UBj
89 integer, intent(in) :: IminS, ImaxS, JminS, JmaxS
90
91
92
93 logical :: Lprocess, SetBC
94 logical :: update = .false.
95# ifdef WET_DRY
96 logical :: bry_update
97# endif
98
99 integer :: ILB, IUB, JLB, JUB
100 integer :: i, ic, itrc, j, k, my_tile
101
102 real(r8) :: cff, cff1, cff2
103
104 character (len=*), parameter :: MyFile = &
105 & __FILE__//", set_data_tile"
106
107# include "set_bounds.h"
108
109
110
111 my_tile=-1
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)
116
117
118
119
120
121
122
123# ifdef ANA_PSOURCE
126 END IF
127# else
128 IF (
domain(ng)%SouthWest_Test(tile))
THEN
134 & update)
136
137# ifdef SOLVE3D
142 END DO
143 END DO
144# endif
145 END IF
146
147# ifdef SOLVE3D
148
149
150
154 & 1,
nsrc(ng),
n(ng), &
155 &
sources(ng) % TsrcG(:,:,:,itrc), &
156 &
sources(ng) % Tsrc(:,:,itrc), &
157 & update)
159 END IF
160 END DO
161# endif
162 END IF
163# endif
164
165
166
167
168
169
170
171# if defined FOUR_DVAR && \
172 defined bulk_fluxes && defined prior_bulk_fluxes
173
174
175
176
177
179 lprocess=.true.
180 ELSE
181 lprocess=.false.
182 END IF
183# else
184 lprocess=.true.
185# endif
186
187# ifdef SOLVE3D
188
189# ifdef CLOUDS
190
191
192
193
194
195 IF (lprocess) THEN
196# ifdef ANA_CLOUD
198# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
199
201 & lbi, ubi, lbj, ubj, &
204 & update)
206# endif
207 END IF
208# endif
209
210# if defined BULK_FLUXES || defined ECOSIM || \
211 (defined shortwave && defined
ana_srflux && defined albedo)
212
213
214
215 IF (lprocess) THEN
216# ifdef ANA_TAIR
218# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
219
221 & lbi, ubi, lbj, ubj, &
224 & update)
226# endif
227 END IF
228# endif
229
230# if defined BULK_FLUXES || defined ECOSIM || \
231 (defined shortwave && defined
ana_srflux && defined albedo)
232
233
234
235 IF (lprocess) THEN
236# ifdef ANA_HUMIDITY
238# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
239
241 & lbi, ubi, lbj, ubj, &
244 & update)
246# endif
247 END IF
248# endif
249
250# ifdef SHORTWAVE
251
252
253
254# ifdef ANA_SRFLUX
256# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
257
259 & lbi, ubi, lbj, ubj, &
262 & update)
264# endif
265
266# ifdef DIURNAL_SRFLUX
267
268
269
270
271 IF (lprocess) THEN
273 END IF
274# endif
275# endif
276
277# if defined RED_TIDE && defined DAILY_SHORTWAVE
278
279
280
281
283 & lbi, ubi, lbj, ubj, &
284 &
forces(ng)%srflxG_avg, &
286 & update)
288# endif
289
290# if defined BULK_FLUXES && \
291
292 ( (defined frc_coupling && defined time_interp) || \
293
294
295
296
297 IF (lprocess) THEN
299 & lbi, ubi, lbj, ubj, &
302 & update)
304 END IF
305# endif
306
307# if defined LONGWAVE_OUT && defined BULK_FLUXES && \
308 ( (defined frc_coupling && defined time_interp) || \
309
310
311
312
313 IF (lprocess) THEN
315 & lbi, ubi, lbj, ubj, &
318 & update)
320 END IF
321# endif
322
323# if defined BULK_FLUXES || defined ECOSIM
324
325
326
327 IF (lprocess) THEN
328# ifdef ANA_WINDS
330# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
331
333 & lbi, ubi, lbj, ubj, &
336 & update)
338
340 & lbi, ubi, lbj, ubj, &
343 & update)
345
346# ifdef CURVGRID
347
348
349
350
354 DO j=jstrr,jendr
355 DO i=istrr,iendr
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
362 END DO
363 END DO
364
367 & lbi, ubi, lbj, ubj, &
370 & lbi, ubi, lbj, ubj, &
372 END IF
373
374# ifdef DISTRIBUTE
376 & lbi, ubi, lbj, ubj, &
381# endif
382 END IF
383# endif
384# endif
385 END IF
386# endif
387
388# ifdef BULK_FLUXES
389
390
391
392 IF (lprocess) THEN
393# ifdef ANA_RAIN
395# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
396
398 & lbi, ubi, lbj, ubj, &
401 & update)
403# endif
404 END IF
405# endif
406
407# ifndef BULK_FLUXES
408
409
410
411# ifdef ANA_STFLUX
413# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
414
416 & lbi, ubi, lbj, ubj, &
419 & update)
421# endif
422# endif
423
424# ifdef QCORRECTION
425
426
427
428
429# ifdef ANA_SST
431# else
433 & lbi, ubi, lbj, ubj, &
436 & update)
438# endif
439
440# ifdef ANA_DQDSST
442# else
444 & lbi, ubi, lbj, ubj, &
447 & update)
449# endif
450# endif
451
452
453
454# ifdef ANA_BTFLUX
456# else
458 & lbi, ubi, lbj, ubj, &
461 & update)
463# endif
464
465# ifdef SALINITY
466# ifdef ANA_SSFLUX
467
468
469
471# else
472
473# if !(defined BULK_FLUXES || defined EMINUSP || \
474 defined frc_coupling)
475
476
477
479 & lbi, ubi, lbj, ubj, &
482 & update)
484
485# elif defined BULK_FLUXES && !defined EMINUSP
486
487
488
489 IF (lprocess) THEN
491 & lbi, ubi, lbj, ubj, &
494 & update)
496 END IF
497# endif
498# endif
499
500# if defined SCORRECTION || defined SRELAXATION
501
502
503
504# ifdef ANA_SSS
506# else
508 & lbi, ubi, lbj, ubj, &
511 & update)
513# endif
514# endif
515
516
517
518# ifdef ANA_BSFLUX
520# else
522 & lbi, ubi, lbj, ubj, &
525 & update)
527# endif
528# endif
529
530# if defined BIOLOGY || defined SEDIMENT || defined T_PASSIVE
531
532
533
535# ifdef ANA_SPFLUX
537# else
539 & lbi, ubi, lbj, ubj, &
540 &
forces(ng)%stfluxG(:,:,:,itrc), &
541 &
forces(ng)%stflux (:,:,itrc), &
542 & update)
544# endif
545# ifdef ANA_BPFLUX
547# else
549 & lbi, ubi, lbj, ubj, &
550 &
forces(ng)%btfluxG(:,:,:,itrc), &
551 &
forces(ng)%btflux (:,:,itrc), &
552 & update)
554# endif
555 END DO
556# endif
557# endif
558
559# ifndef BULK_FLUXES
560
561
562
563# ifdef ANA_SMFLUX
565# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
566
568 & lbi, ubi, lbj, ubj, &
571 & update)
573
575 & lbi, ubi, lbj, ubj, &
578 & update)
580
581# ifdef CURVGRID
582
583
584
585
589 DO j=jstrr,jendr
590 DO i=istrr,iendr
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
597 END DO
598 END DO
599
602 & lbi, ubi, lbj, ubj, &
605 & lbi, ubi, lbj, ubj, &
607 END IF
608
609# ifdef DISTRIBUTE
611 & lbi, ubi, lbj, ubj, &
616# endif
617 END IF
618# endif
619# endif
620# endif
621
622# if defined BULK_FLUXES || defined ECOSIM || defined ATM_PRESS
623
624
625
626 IF (lprocess) THEN
627# ifdef ANA_PAIR
629# elif (defined FRC_COUPLING && defined TIME_INTERP) || \
630
631 setbc=.true.
632
634 & lbi, ubi, lbj, ubj, &
637 & update, setbc)
639# endif
640 END IF
641# endif
642
643# ifdef WAVE_DATA
644
645
646
647# ifdef ANA_WWAVE
649# else
650# ifdef WAVES_DIR
652 & lbi, ubi, lbj, ubj, &
655 & update)
657
658# endif
659
660# ifdef WAVES_DIRP
662 & lbi, ubi, lbj, ubj, &
665 & update)
667
668# endif
669
670# ifdef WAVES_HEIGHT
672 & lbi, ubi, lbj, ubj, &
675 & update)
677
678# endif
679
680# ifdef WAVES_LENGTH
682 & lbi, ubi, lbj, ubj, &
685 & update)
687
688# endif
689
690# ifdef WAVES_LENGTHP
692 & lbi, ubi, lbj, ubj, &
695 & update)
697
698# endif
699
700# ifdef WAVES_TOP_PERIOD
702 & lbi, ubi, lbj, ubj, &
703 &
forces(ng)%Pwave_topG, &
705 & update)
707
708# endif
709
710# ifdef WAVES_BOT_PERIOD
712 & lbi, ubi, lbj, ubj, &
713 &
forces(ng)%Pwave_botG, &
715 & update)
717
718# endif
719
720# if defined WAVES_UB
722 & lbi, ubi, lbj, ubj, &
723 &
forces(ng)%Uwave_rmsG, &
725 & update)
727
728# endif
729
730# if defined WAVES_DISS
732 & lbi, ubi, lbj, ubj, &
733 &
forces(ng)%Dissip_breakG, &
734 &
forces(ng)%Dissip_break, &
735 & update)
737
739 & lbi, ubi, lbj, ubj, &
740 &
forces(ng)%Dissip_wcapG, &
741 &
forces(ng)%Dissip_wcap, &
742 & update)
744
745# endif
746
747# if defined ROLLER_SVENDSEN
749 & lbi, ubi, lbj, ubj, &
750 &
forces(ng)%Wave_breakG, &
751 &
forces(ng)%Wave_break, &
752 & update)
754
755# endif
756# endif
757# endif
758
759# if defined ECOSIM && defined SOLVE3D
760
761
762
763
765# endif
766
767# ifdef ANA_SPINNING
768
769
770
771
773# endif
774
775# ifdef HYPOXIA_SRM
776
777
778
779# ifdef ANA_RESPIRATION
781# else
783 & lbi, ubi, lbj, ubj, 1,
n(ng), &
784 &
ocean(ng)%respirationG, &
785 &
ocean(ng)%respiration, &
786 & update)
788# endif
789# endif
790
791# ifdef RED_TIDE
792
793
794
796 & lbi, ubi, lbj, ubj, 1,
n(ng), &
797 &
ocean(ng)%DIN_obsG, &
798 &
ocean(ng)%DIN_obs, &
799 & update)
801# endif
802
803#if defined FOUR_DVAR && \
804 defined bulk_fluxes && defined prior_bulk_fluxes
805
806
807
808
809
810
811
812
813
814
815
816
817 IF (.not.lprocess) THEN
818
819
820
822 & lbi, ubi, lbj, ubj, &
825 & update)
827
829 & lbi, ubi, lbj, ubj, &
832 & update)
834
835# ifdef ATM_PRESS
836
837
838
839 setbc=.true.
840
842 & lbi, ubi, lbj, ubj, &
845 & update, setbc)
847# endif
848
849# ifdef SOLVE3D
850# ifndef ANA_STFLUX
851
852
853
855 & lbi, ubi, lbj, ubj, &
858 & update)
860# endif
861
862# if defined SALINITY && !defined ANA_SSFLUX
863
864
865
867 & lbi, ubi, lbj, ubj, &
870 & update)
872# endif
873# endif
874 END IF
875#endif
876
877
878
879
880
881
882
884# ifdef ANA_FSOBC
886# else
887 IF (
domain(ng)%SouthWest_Test(tile))
THEN
893 & update)
895 END IF
896
902 & update)
904 END IF
905
911 & update)
913 END IF
914
920 & update)
922 END IF
923 END IF
924# endif
925
926# if defined WET_DRY
927
928
929
931 bry_update=.false.
932 IF (
domain(ng)%Western_Edge(tile))
THEN
933 DO j=jstrr,jendr
935 IF (
boundary(ng)%zeta_west(j).le.cff)
THEN
937 END IF
938 END DO
939 bry_update=.true.
940 END IF
941# ifdef DISTRIBUTE
943 & bry_update, &
945# endif
946 END IF
947
949 bry_update=.false.
950 IF (
domain(ng)%Eastern_Edge(tile))
THEN
951 DO j=jstrr,jendr
953 IF (
boundary(ng)%zeta_east(j).le.cff)
THEN
955 END IF
956 END DO
957 bry_update=.true.
958 END IF
959# ifdef DISTRIBUTE
961 & bry_update, &
963# endif
964 END IF
965
967 bry_update=.false.
968 IF (
domain(ng)%Southern_Edge(tile))
THEN
969 DO i=istrr,iendr
971 IF (
boundary(ng)%zeta_south(i).le.cff)
THEN
973 END IF
974 END DO
975 bry_update=.true.
976 END IF
977# ifdef DISTRIBUTE
979 & bry_update, &
981# endif
982 END IF
983
985 bry_update=.false.
986 IF (
domain(ng)%Northern_Edge(tile))
THEN
987 DO i=istrr,iendr
989 IF (
boundary(ng)%zeta_north(i).le.cff)
THEN
991 END IF
992 END DO
993 bry_update=.true.
994 END IF
995# ifdef DISTRIBUTE
997 & bry_update, &
999# endif
1000 END IF
1001# endif
1002 END IF
1003
1004
1005
1007# ifdef ANA_M2OBC
1009# else
1010 IF (
domain(ng)%SouthWest_Test(tile))
THEN
1016 & update)
1018 END IF
1019
1025 & update)
1027 END IF
1028
1034 & update)
1036 END IF
1037
1043 & update)
1045 END IF
1046
1052 & update)
1054 END IF
1055
1061 & update)
1063 END IF
1064
1070 & update)
1072 END IF
1073
1079 & update)
1081 END IF
1082 END IF
1083# endif
1084 END IF
1085
1086# ifdef SOLVE3D
1087
1088
1089
1091# ifdef ANA_M3OBC
1093# else
1094 IF (
domain(ng)%SouthWest_Test(tile))
THEN
1097 & 0,
mm(ng)+1,
n(ng), &
1100 & update)
1102 END IF
1103
1106 & 1,
mm(ng)+1,
n(ng), &
1109 & update)
1111 END IF
1112
1115 & 0,
mm(ng)+1,
n(ng), &
1118 & update)
1120 END IF
1121
1124 & 1,
mm(ng)+1,
n(ng), &
1127 & update)
1129 END IF
1130
1133 & 1,
lm(ng)+1,
n(ng), &
1136 & update)
1138 END IF
1139
1142 & 0,
lm(ng)+1,
n(ng), &
1145 & update)
1147 END IF
1148
1151 & 1,
lm(ng)+1,
n(ng), &
1154 & update)
1156 END IF
1157
1160 & 0,
lm(ng)+1,
n(ng), &
1163 & update)
1165 END IF
1166 END IF
1167# endif
1168 END IF
1169
1170
1171
1173# ifdef ANA_TOBC
1175# else
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), &
1183 & update)
1185 & __line__, myfile)) RETURN
1186 END IF
1187
1190 & jlb, jub,
n(ng), 0,
mm(ng)+1,
n(ng), &
1191 &
boundary(ng) % tG_east(:,:,:,itrc), &
1192 &
boundary(ng) % t_east(:,:,itrc), &
1193 & update)
1195 & __line__, myfile)) RETURN
1196 END IF
1197
1200 & ilb, iub,
n(ng), 0,
lm(ng)+1,
n(ng), &
1201 &
boundary(ng) % tG_south(:,:,:,itrc), &
1202 &
boundary(ng) % t_south(:,:,itrc), &
1203 & update)
1205 & __line__, myfile)) RETURN
1206 END IF
1207
1210 & ilb, iub,
n(ng), 0,
lm(ng)+1,
n(ng), &
1211 &
boundary(ng) % tG_north(:,:,:,itrc), &
1212 &
boundary(ng) % t_north(:,:,itrc), &
1213 & update)
1215 & __line__, myfile)) RETURN
1216 END IF
1217 END DO
1218 END IF
1219# endif
1220 END IF
1221# endif
1222
1223
1224
1225
1226
1227
1228
1230# ifdef ANA_SSH
1232# else
1234 & lbi, ubi, lbj, ubj, &
1237 & update)
1239# endif
1240 END IF
1241
1242
1243
1245# ifdef ANA_M2CLIMA
1247# else
1249 & lbi, ubi, lbj, ubj, &
1250 &
clima(ng)%ubarclmG, &
1251 &
clima(ng)%ubarclm, &
1252 & update)
1254
1256 & lbi, ubi, lbj, ubj, &
1257 &
clima(ng)%vbarclmG, &
1258 &
clima(ng)%vbarclm, &
1259 & update)
1261# endif
1262 END IF
1263
1264# ifdef SOLVE3D
1265
1266
1267
1269# ifdef ANA_M3CLIMA
1271# else
1273 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1274 &
clima(ng)%uclmG, &
1276 & update)
1278
1280 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1281 &
clima(ng)%vclmG, &
1283 & update)
1285# endif
1286 END IF
1287
1288
1289
1290# ifdef ANA_TCLIMA
1293 END IF
1294# else
1295 ic=0
1298 ic=ic+1
1300 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1301 &
clima(ng)%tclmG(:,:,:,:,ic), &
1302 &
clima(ng)%tclm (:,:,:,ic), &
1303 & update)
1305 END IF
1306 END DO
1307# endif
1308# endif
1309
1310# if defined NLM_OUTER || \
1311 defined rbl4dvar || \
1312 defined rbl4dvar_ana_sensitivity || \
1313 defined rbl4dvar_fct_sensitivity || \
1314 defined sp4dvar
1315
1316
1317
1318
1319
1321
1322
1323
1325 & lbi, ubi, lbj, ubj, &
1326 &
ocean(ng)%zetaG, &
1327 &
ocean(ng)%f_zeta, &
1328 & update)
1330
1331# ifndef SOLVE3D
1332
1333
1334
1336 & lbi, ubi, lbj, ubj, &
1337 &
ocean(ng)%ubarG, &
1338 &
ocean(ng)%f_ubar, &
1339 & update)
1341
1343 & lbi, ubi, lbj, ubj, &
1344 &
ocean(ng)%vbarG, &
1345 &
ocean(ng)%f_vbar, &
1346 & update)
1348
1349# else
1350
1351
1352
1354 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1357 & update)
1359
1361 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1364 & update)
1366
1367
1368
1371 & lbi, ubi, lbj, ubj, 1,
n(ng), &
1372 &
ocean(ng)%tG(:,:,:,:,itrc), &
1373 &
ocean(ng)%f_t(:,:,:,itrc), &
1374 & update)
1376 END DO
1377# endif
1378 END IF
1379# endif
1380
1381 RETURN
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_ngfld(ng, model, ifield, lbi, ubi, ubj, istr, iend, jrec, finp, fout, update)