3
4
5
6
7
8
9
10
11
12
13
14
15
21
23
24 implicit none
25
26
27
28 integer :: iatms, ibbl, ibiology, idriver
29 integer :: ivelHadv, ivelVadv, ivmix, nearshore
30#ifdef SEDIMENT
31 integer :: sbed_load, sbed_type
32#endif
33 integer :: is, lstr, ng
34
35
36
37
38
39 iatms = 0
40 ibbl = 0
41 ibiology = 0
42 idriver = 0
43 ivelhadv = 0
44 ivelvadv = 0
45 ivmix = 0
46 nearshore = 0
47#ifdef SEDIMENT
48 sbed_load = 0
49 sbed_type = 0
50#endif
51
52
53
54
55
58 10 FORMAT (/,' Activated C-preprocessing Options:',/)
59 20 FORMAT (1x,a,t27,a)
60
63 END IF
69
70#if defined AD_AVERAGES && defined ADJOINT
71
73 & 'Writing out time-averaged adjoint model fields'
76#endif
77#if defined AD_OUTPUT_STATE && defined ADJOINT
78
80 & 'Writing full adjoint state solution by adding time levels'
82 coptions(is:is+17)=
' AD_OUTPUT_STATE,'
83#endif
84#if defined ADD_FSOBC && defined SSH_TIDES
85
87 & 'Adding tidal elevation to processed OBC data'
90#endif
91#if defined ADD_M2OBC && defined UV_TIDES
92
94 & 'Adding tidal currents to processed OBC data'
97#endif
98#ifdef ADJOINT
99
101 & 'Adjoint Model'
104#endif
105#if defined ADJUST_BOUNDARY && \
106 (defined correlation || \
107 defined i4dvar || \
108 defined i4dvar_ana_sensitivity || \
109 defined rbl4dvar || \
110 defined r4dvar || \
111 defined sensitivity_4dvar || \
112 defined sp4dvar)
113
115 & 'Including boundary conditions in 4D-Var state estimation'
117 coptions(is:is+17)=
' ADJUST_BOUNDARY,'
118#endif
119#if defined ADJUST_STFLUX && \
120 (defined correlation || \
121 defined i4dvar || \
122 defined i4dvar_ana_sensitivity || \
123 defined rbl4dvar || \
124 defined r4dvar || \
125 defined sensitivity_4dvar || \
126 defined sp4dvar)
127
129 & 'Including surface tracer flux in 4D-Var state estimation'
131 coptions(is:is+15)=
' ADJUST_STFLUX,'
132#endif
133#if defined ADJUST_WSTRESS && \
134 (defined correlation || \
135 defined i4dvar || \
136 defined i4dvar_ana_sensitivity || \
137 defined rbl4dvar || \
138 defined r4dvar || \
139 defined sensitivity_4dvar || \
140 defined sp4dvar)
141
143 & 'Including surface wind stress in 4D-Var state estimation'
145 coptions(is:is+16)=
' ADJUST_WSTRESS,'
146#endif
147#if defined AD_IMPULSE
148
150 & 'Force adjoint model with intermittent impulses'
153#endif
154#ifdef ADM_DRIVER
155
157 & 'Generic adjoint model driver'
160 idriver=idriver+1
161#endif
162#ifdef AD_SENSITIVITY
163
165 & 'Adjoint Sensitivity Analysis'
167 coptions(is:is+16)=
' AD_SENSITIVITY,'
168 idriver=idriver+1
169#endif
170#ifdef AFT_EIGENMODES
171
173 & 'Adjoint Finite Time Eigenvalues'
175 coptions(is:is+16)=
' AFT_EIGENMODES,'
176 idriver=idriver+1
177#endif
178#if defined AGE_MEAN && defined T_PASSIVE && defined SOLVE3D
179
181 & 'Computing Mean Age of inert passive tracer'
184 idriver=idriver+1
185#endif
186#if defined ALBEDO && defined ANA_SRFLUX
187
189 & 'Shortwave radiation from albedo equation'
192#endif
193#if defined ALLOW_BOTTOM_OBS && \
194 (defined four_dvar || \
195 defined verification) && defined observations
196
198 & 'Allow observations that lie in the lower bottom grid cell'
200 coptions(is:is+18)=
' ALLOW_BOTTOM_OBS,'
201#endif
202#if defined BIOLOGY && defined ANA_BIOLOGY
203
205 & 'Analytical biology initial conditions'
208#endif
209#if defined BIOLOGY || defined SEDIMENT || defined T_PASSIVE
210# ifdef ANA_BPFLUX
211
213 & 'Analytical bottom passive tracers fluxes'
216# endif
217#endif
218#ifdef ANA_BSFLUX
219
221 & 'Analytical kinematic bottom salinity flux'
224#endif
225#ifdef ANA_BTFLUX
226
228 & 'Analytical kinematic bottom temperature flux'
231#endif
232#if defined ANA_CLOUD && defined BULK_FLUXES
233
235 & 'Analytical cloud fraction'
238#endif
239#if defined ANA_DRAG && defined UV_DRAG_GRID
240
242# if defined UV_LOGDRAG || defined BBL_MODEL
243 & 'Analytical spatially varying bottom roughness length'
244# elif defined UV_LDRAG
245 & 'Analytical spatially varying linear drag coefficient'
246# elif defined UV_QDRAG
247 & 'Analytical spatially varying quadratic drag coefficient'
248# endif
251#endif
252#ifdef ANA_DIAG
253
255 & 'Customized diagnostics'
258#endif
259#if defined ANA_DQDSST && defined QCORRECTION
260
262 & 'Analytical surface heat flux sensitivity to SST'
265#endif
266#ifdef ANA_FSOBC
267
269 & 'Analytical free-surface boundary conditions'
272#endif
273#ifdef ANA_GRID
274
276 & 'Analytical grid set-up'
279#endif
280#if defined ANA_HUMIDITY && defined BULK_FLUXES
281
283 & 'Analytical surface air humidity'
286#endif
287#ifdef ANA_INITIAL
288
290 & 'Analytical initial conditions'
293#endif
294#ifdef ANA_M2CLIMA
295
297 & 'Analytical 2D momentum climatology'
300#endif
301#ifdef ANA_M2OBC
302
304 & 'Analytical 2D momentum boundary conditions'
307#endif
308#if defined ANA_M3CLIMA && defined SOLVE3D
309
311 & 'Analytical 3D momentum climatology'
314#endif
315#if defined ANA_M3OBC && defined SOLVE3D
316
318 & 'Analytical 3D momentum boundary conditions'
321#endif
322#ifdef ANA_MASK
323
325 & 'Analytical Land/Sea Masking'
328#endif
329#ifdef ANA_NUDGCOEF
330
333 & 'Analytical spatially varying nudging time-scales'
336 END IF
337#endif
338#if defined ANA_PAIR && defined BULK_FLUXES
339
341 & 'Analytical surface air pressure'
344#endif
345#if defined ANA_PASSIVE && defined T_PASSIVE && defined SOLVE3D
346
348 & 'Analytical initial conditions for inert tracers'
351#endif
352#if defined ANA_PERTURB
353
355 & 'Perturb initial conditions'
358#endif
359#ifdef ANA_PSOURCE
360
362 & 'Analytical point sources and sinks'
365#endif
366#if defined ANA_RAIN && defined BULK_FLUXES
367
369 & 'Analytical rain fall rate'
372#endif
373#if defined ANA_RESPIRATION && defined HYPOXIA_SRM
374
376 & 'Analytical respiration rate'
378 coptions(is:is+17)=
' ANA_RESPIRATION,'
379#endif
380#if defined ANA_SCOPE && \
381 (defined ad_sensitivity || \
382 defined i4dvar_ana_sensitivity || \
383 defined opt_observations || \
384 defined sensitivity_4dvar || \
385 defined so_semi)
386
388 & 'Analytical spatial scope masking arrays'
391#endif
392#if defined ANA_SEDIMENT && (defined SEDIMENT || defined BBL_MODEL)
393
395 & 'Analytical sediment initial conditions'
398#endif
399#ifdef ANA_SMFLUX
400
402 & 'Analytical kinematic surface momentum flux'
405#endif
406#if defined BIOLOGY || defined SEDIMENT || defined T_PASSIVE
407# ifdef ANA_SPFLUX
408
410 & 'Analytical surface passive tracer fluxes'
413# endif
414#endif
415#ifdef ANA_SPINNING
416
418 & 'Analytical time-varying rotation force'
421#endif
422#ifdef ANA_SPONGE
423
426 & 'Analytical enhanced viscosity/diffusion sponge'
429 END IF
430#endif
431#ifdef ANA_SRFLUX
432
434 & 'Analytical kinematic shortwave radiation flux'
437#endif
438#ifdef ANA_SSH
439
441 & 'Analytical sea surface height climatology'
444#endif
445#ifdef ANA_SSS
446
448 & 'Analytical sea surface salinity'
451#endif
452#if defined ANA_SST && defined QCORRECTION
453
455 & 'Analytical sea surface temperature, SST'
458#endif
459#ifdef ANA_SSFLUX
460
462 & 'Analytical kinematic surface salinity flux'
465#endif
466#ifdef ANA_STFLUX
467
469 & 'Analytical kinematic surface temperature flux'
472#endif
473#if defined ANA_TCLIMA && defined SOLVE3D
474
476 & 'Analytical tracer climatology'
479#endif
480#if defined ANA_TOBC && defined SOLVE3D
481
483 & 'Analytical tracers boundary conditions'
486#endif
487#if defined ANA_VMIX && defined SOLVE3D
488
490 & 'Analytical vertical mixing coefficients'
493 ivmix=ivmix+1
494#endif
495#if defined ANA_WINDS && defined BULK_FLUXES
496
498 & 'Analytical surface wind components'
501#endif
502#if defined ANA_WTYPE && defined WTYPE_GRID && \
503 (defined
lmd_skpp || defined solar_source)
504
506 & 'Analytical spatially varying Jerlov water type index'
509#endif
510#ifdef ANA_WWAVE
511
513 & 'Analytical wind induced waves'
516#endif
517#ifdef ARRAY_MODES
518
520 & 'Stabilized Representer Matrix Array Modes'
523 idriver=idriver+1
524# ifdef ARRAY_MODES_SPLIT
525
527 & 'Separate analysis due to IC, surface forcing, and OBC'
529 coptions(is:is+19)=
' ARRAY_MODES_SPLIT,'
530# endif
531#endif
532#if defined DISTRIBUTE && defined NESTING
533# if defined ASSEMBLE_ALLGATHER
534
536 & 'Using mpi_allgather in mp_assemble routine'
538 coptions(is:is+20)=
' ASSEMBLE_ALLGATHER,'
539# elif defined ASSEMBLE_ALLREDUCE
540
542 & 'Using mpi_allreduce in mp_assemble routine'
544 coptions(is:is+20)=
' ASSEMBLE_ALLGATHER,'
545# elif defined ASSEMBLE_SENDRECV
546
548 & 'Using mpi_isend/mpi_recv in mp_assemble routine'
550 coptions(is:is+19)=
' ASSEMBLE_SENDRECV,'
551# endif
552#endif
553#ifdef ASSUMED_SHAPE
554
556 & 'Using assumed-shape arrays'
558 coptions(is:is+15)=
' ASSUMED_SHAPE,'
559#endif
560#if defined ASYNCHRONOUS_PIO && defined PIO_LIB && defined DISTRIBUTE
561
563 & 'PIO library with disjointed dedicated I/O processes'
565 coptions(is:is+18)=
' ASYNCHRONOUS_PIO,'
566#endif
567#if defined ASYNCHRONOUS_SCORPIO && defined PIO_LIB && defined DISTRIBUTE
568
570 & 'SCORPIO library with disjointed dedicated I/O processes'
572 coptions(is:is+22)=
' ASYNCHRONOUS_SCORPIO,'
573#endif
574#ifdef ATM_PRESS
575
577 & 'Impose inverse barometer effect in pressure gradient term'
580#endif
581#ifdef AVERAGES
582
584 & 'Writing out time-averaged nonlinear model fields'
587# if defined AVERAGES_DETIDE && (defined SSH_TIDES || defined UV_TIDES)
588
590 & 'Writing out time-averaged nonlinear model detided fields'
592 coptions(is:is+17)=
' AVERAGES_DETIDE,'
593# endif
594# ifdef AVERAGES_UV_KIRBY
596 & 'Writing out time-averaged uwave and vwave Kirby velocities'
598 coptions(is:is+17)=
' AVERAGES_UV_KIRBY,'
599# endif
600# ifdef AVERAGES_WEC
602 & 'Writing out time-averaged nearshore radiation fields'
605# endif
606#endif
607#if defined BACKGROUND && defined FOUR_DVAR
608
610 & 'Include background cost function'
613#endif
614#ifdef BALANCE_OPERATOR
615
617 & 'Error Covariance Multivariate Balance Operator'
619 coptions(is:is+18)=
' BALANCE_OPERATOR,'
620#endif
621#if defined SEDIMENT && defined BEDLOAD_MPM
622
624 & 'Activate bed load sediment transport Meyer-Peter-Mueller'
627 sbed_load=sbed_load+1
628#endif
629#if defined SEDIMENT && defined BEDLOAD_SOULSBY
630
632 & 'Activate bed load sediment transport Soulsby formula'
634 coptions(is:is+17)=
' BEDLOAD_SOULSBY,'
635#endif
636#if defined SEDIMENT && defined BEDLOAD_VANDERA
637
639 & 'Activate bed load sediment transport vanDerA formula'
641 coptions(is:is+17)=
' BEDLOAD_VANDERA,'
642#endif
643#if defined SEDIMENT && defined BEDLOAD_VANDERA_ASYM_LIMITS
644
645 IF (
master)
WRITE (
stdout,20)
'BEDLOAD_VANDERA_ASYM_LIMITS', &
646 & 'Activate bed load vanDerA asymmetry limits'
648 coptions(is:is+29)=
' BEDLOAD_VANDERA_ASYM_LIMITS,'
649#endif
650#if defined SEDIMENT && defined BEDLOAD_VANDERA_SURFACE_WAVE
651
652 IF (
master)
WRITE (
stdout,20)
'BEDLOAD_VANDERA_SURFACE_WAVE', &
653 & 'Activate bed load vanDerA surface wave'
655 coptions(is:is+30)=
' BEDLOAD_VANDERA_SURFACE_WAVE,'
656#endif
657#if defined SEDIMENT && defined BEDLOAD_VANDERA_WAVE_AVGD_STRESS
658
659 IF (
master)
WRITE (
stdout,20)
'BEDLOAD_VANDERA_WAVE_AVGD_STRESS', &
660 & 'Activate bed load vanDerA wave avg stress'
662 coptions(is:is+34)=
' BEDLOAD_VANDERA_WAVE_AVGD_STRESS,'
663#endif
664#if defined SEDIMENT && defined BEDLOAD_VANDERA_MADSEN_UDELTA
665
666 IF (
master)
WRITE (
stdout,20)
'BEDLOAD_VANDERA_MADSEN_UDELTA', &
667 & 'Activate bed load madsen current calculation'
669 coptions(is:is+31)=
' BEDLOAD_VANDERA_MADSEN_UDELTA,'
670#endif
671#if defined SEDIMENT && defined BEDLOAD_VANDERA_DIRECT_UDELTA
672
673 IF (
master)
WRITE (
stdout,20)
'BEDLOAD_VANDERA_DIRECT_UDELTA', &
674 & 'Activate bed load direct elevation current calculation'
676 coptions(is:is+30)=
' BEDLOAD_VANDERA_DIRECT_UDELTA,'
677#endif
678#if defined BGQC && defined FOUR_DVAR
679
681 & 'Background quality control of observations'
684#endif
685#if defined BEOFS_ONLY && defined WEAK_CONSTRAINT
686
688 & 'Compute EOFs of the background error covariance matrix'
691#endif
692#ifdef BIO_FENNEL
693
695 & 'Fennel et al. (2006) nitrogen-based model'
698 ibiology=ibiology+1
699#endif
700#if defined BNORM && defined HESSIAN_SV
701
703 & 'Background normalization of Hessian singular vectors'
706#endif
707#if defined BIO_OPTIC && defined ECOSIM
708
710 & 'Underwater light field calculations'
713#endif
714#if defined BIO_SEDIMENT && \
715 (defined bio_fennel || defined nemuro || defined ecosim)
716
718 & 'Restore fallen particulate material to the nutrient pool'
721#endif
722#ifdef BODYFORCE
723
725 & 'Momentum stresses as body-forces'
728#endif
729#ifdef DISTRIBUTE
730# if defined BOUNDARY_ALLGATHER
731
733 & 'Using mpi_allgather in mp_boundary routine'
735 coptions(is:is+20)=
' BOUNDARY_ALLGATHER,'
736# elif defined BOUNDARY_ALLREDUCE
738 & 'Using mpi_allreduce in mp_boundary routine'
740 coptions(is:is+20)=
' BOUNDARY_ALLREDUCE,'
741# endif
742#endif
743#if defined BOTTOM_STREAMING && defined WEC_VF
745 & 'Wave current streaming term'
747 coptions(is:is+18)=
' BOTTOM_STREAMING,'
748#endif
749#ifdef BULK_FLUXES
750
752 & 'Surface bulk fluxes parameterization'
755#endif
756#ifdef BVF_MIXING
757
759 & 'Brunt-Vaisala frequency based vertical mixing'
762 ivmix=ivmix+1
763#endif
764#if defined CANUTO_A && defined GLS_MIXING
765
767 & 'Canuto A-stability function formulation'
770#endif
771#if defined CANUTO_B && defined GLS_MIXING
772
774 & 'Canuto B-stability function formulation'
777#endif
778#if defined CARBON && defined BIO_FENNEL
779
781 & 'Add Carbon constituents'
784#endif
785#if defined CELERITY_READ && defined FORWARD_READ
786
788 & 'Read in radiation celerity from forward file'
790 coptions(is:is+15)=
' CELERETY_READ,'
791#endif
792#if defined CELERITY_WRITE && defined FORWARD_WRITE
793
795 & 'Write out radiation celerity in forward file'
797 coptions(is:is+16)=
' CELERITY_WRITE,'
798#endif
799#ifdef CHECKSUM
800
802 & 'Report order-invariant checksum (hash) when processing I/O'
805#endif
806#ifdef CHECK_OPEN_FILES
807
809 & 'Monitor the number opened, closed, and created NetCDF files'
811 coptions(is:is+18)=
' CHECK_OPEN_FILES,'
812#endif
813#ifdef CLIPPING
814
816 & 'Stabilized Representer Matrix clipping spectrum analysis'
819 idriver=idriver+1
820# ifdef CLIPPING_SPLIT
821
823 & 'Separate analysis due to IC, surface forcing, and OBC'
825 coptions(is:is+16)=
' CLIPPING_SPLIT,'
826# endif
827#endif
828#if defined CMEPS && defined ESMF_LIB
829
831 & 'Using Community Mediator for Earth Prediction Systems'
834#endif
835#ifdef COAMPS_COUPLING
836
838 & 'Atmosphere coupling with COAMPS'
840 coptions(is:is+17)=
' COAMPS_COUPLING,'
841 iatms=iatms+1
842#endif
843#if defined DISTRIBUTE
844# if defined COLLECT_ALLGATHER
845
847 & 'Using mpi_allgather in mp_collect routine'
849 coptions(is:is+19)=
' COLLECT_ALLGATHER,'
850# elif defined COLLECT_ALLREDUCE
851
853 & 'Using mpi_allreduce in mp_collect routine'
855 coptions(is:is+19)=
' COLLECT_ALLGATHER,'
856# elif defined COLLECT_SENDRECV
857
859 & 'Using mpi_isend/mpi_recv in mp_collect routine'
861 coptions(is:is+18)=
' COLLECT_SENDRECV,'
862# endif
863#endif
864#if defined COMPUTE_MLD && defined STD_MODEL && defined FOUR_DVAR
865
867 & 'Compute Mixed Layer Depth for background error modeling'
870#endif
871#if defined CONCURRENT_KERNEL && defined DISJOINTED && \
872 defined distribute && defined sp4dvar
873
875 & 'Concurrent TLM and ADM in saddle-point 4D-Var'
877 coptions(is:is+19)=
' CONCURRENT_KERNEL,'
878#endif
879#ifdef CORRELATION
880
882 & 'Background-error Correlation Model'
885 idriver=idriver+1
886#endif
887#ifdef DATA_COUPLING
888
890 & 'DATA model included in coupling'
892 coptions(is:is+15)=
' DATA_COUPLING,'
893#endif
894#if defined DATALESS_LOOPS && defined R4DVAR
895
897 & 'Testing convergence of RPM Picard iterations'
899 coptions(is:is+16)=
' DATALESS_LOOPS,'
900#endif
901#if defined GLS_MIXING && defined CHARNOK
902
904 & 'Charnock surface roughness from wind stress'
907#endif
908#if defined PROPAGATOR && defined CHECKPOINTING
909
911 & 'Processing checkpointing NetCDF for GST analysis'
913 coptions(is:is+15)=
' CHECKPOINTING,'
914#endif
915#if defined GLS_MIXING && defined CRAIG_BANNER
916
918 & 'Craig and Banner wave breaking surface flux'
921#endif
922#if defined COARE_OOST
923
925 & 'Oost et al (2002) relation for ZoW in bulk fluxes'
928#endif
929#if defined COARE_TAYLOR_YELLAND
930
932 & 'Taylor and Yelland (2001) relation for ZoW in bulk fluxes'
934 coptions(is:is+22)=
' COARE_TAYLOR_YELLAND,'
935#endif
936#if defined COOL_SKIN && defined BULK_FLUXES
937
939 & 'Surface cool skin correction'
942#endif
943#if defined COSINE2 && defined SOLVE3D
944
946 & 'Cosine-squared shape time-averaging barotropic filter'
949#endif
950#ifdef CURVGRID
951
953 & 'Orthogonal curvilinear grid'
956#endif
957#if defined DAILY_SHORTWAVE && defined RED_TIDE
958
960 & 'Daily-averaged surface solar shortwave radiation flux'
962 coptions(is:is+17)=
' DAILY_SHORTWAVE,'
963#endif
964#ifdef DEBUGGING
965
967 & 'Internal debugging switch activated'
970#endif
971#ifdef DEEPWATER_WAVES
972
974 & 'Deep water waves approx in bulk fluxes'
976 coptions(is:is+17)=
' DEEPWATER_WAVES,'
977#endif
978#if defined DEFLATE && defined HDF5
979
981 & 'Setting compression in output NetCDF-4/HDF5 files'
984#endif
985#if defined DENITRIFICATION && defined BIO_FENNEL
986
988 & 'Add denitrification processes'
990 coptions(is:is+17)=
' DENITRIFICATION,'
991#endif
992#if defined DIAGNOSTICS_BIO && defined BIO_FENNEL
993
995 & 'Computing and writing biological diagnostic terms'
997 coptions(is:is+17)=
' DIAGNOSTICS_BIO,'
998#endif
999#ifdef DIAGNOSTICS_TS
1000
1002 & 'Computing and writing tracer diagnostic terms'
1004 coptions(is:is+16)=
' DIAGNOSTICS_TS,'
1005#endif
1006#ifdef DIAGNOSTICS_UV
1007
1009 & 'Computing and writing momentum diagnostic terms'
1011 coptions(is:is+16)=
' DIAGNOSTICS_UV,'
1012#endif
1013#if defined DIFF_3DCOEF
1014
1016 & 'Horizontal, time-dependent 3D diffusion coefficient'
1019#endif
1020#if defined TS_DIF2 || defined TS_DIF4
1021# ifdef DIFF_GRID
1022
1024 & 'Horizontal diffusion coefficient scaled by grid size'
1027# endif
1028#endif
1029#if defined DISJOINTED && defined DISTRIBUTE
1030
1032 & 'Split mpi-communicator into disjointed subgroups'
1035#endif
1036#ifdef DIURNAL_SRFLUX
1037
1039 & 'Modulate shortwave radiation by the local diurnal cycle'
1041 coptions(is:is+16)=
' DIURNAL_SRFLUX,'
1042#endif
1043#ifdef DJ_GRADPS
1044
1046 & 'Parabolic Splines density Jacobian (Shchepetkin, 2002)'
1049#endif
1050#ifdef DOUBLE_PRECISION
1051
1053 & 'Double precision arithmetic numerical kernel'
1055 coptions(is:is+18)=
' DOUBLE_PRECISION,'
1056#endif
1057#if defined DRENNAN
1059 & 'Drennan et al (2003) relation for ZoW in bulk fluxes'
1062#endif
1063#ifdef ECOSIM
1064
1066 & 'Bio-Optical EcoSim model'
1069 ibiology=ibiology+1
1070#endif
1071#if defined EMINUSP && defined BULK_FLUXES
1072
1074 & 'Compute Salt Flux using E-P'
1077#endif
1078#if defined ESMF_LIB && defined MODEL_COUPLING
1079
1081 & 'Using Earth System Modeling Framework library'
1084#endif
1085#ifdef ENKF_RESTART
1086
1088 & 'Writting fields for offline Ensemble Kalman Filter'
1090 coptions(is:is+14)=
' ENKF_RESTART,'
1091#endif
1092#ifdef ENSEMBLE
1093
1095 & 'Ensemble Forecasting Propagator'
1098#endif
1099#if defined ESM_SETRUNCLOCK && defined MODEL_COUPLING && \
1100 defined esmf_lib
1101
1103 & 'Sets coupled component specialized SetRunClock method'
1105 coptions(is:is+17)=
' ESM_SETRUNCLOCK,'
1106#endif
1107#if defined EVOLVED_LCZ && defined FOUR_DVAR
1108
1110 & 'Compute 4D-Var evolved Hessian singular vectors'
1113#endif
1114# if defined EXCLUDE_SPONGE && defined MODEL_COUPLING && \
1115 (defined data_coupling &&
1116
1118 & 'Exclude sponge points in export fields during coupling'
1120 coptions(is:is+16)=
' EXCLUDE_SPONGE,'
1121#endif
1122#ifdef FLOATS
1123
1125 & 'Simulated Lagrangian drifters'
1128#endif
1129#if defined FLOAT_BIOLOGY && defined FLOATS
1130
1132 & 'Biological behavior on Lagrangian drifters'
1134 coptions(is:is+15)=
' FLOAT_BIOLOGY,'
1135#endif
1136#if defined FLOAT_OYSTER && defined FLOATS
1137
1139 & 'Oyster model behavior on Lagrangian drifters'
1141 coptions(is:is+14)=
' FLOAT_OYSTER,'
1142#endif
1143#if defined FLOAT_STICKY && defined FLOATS && defined SOLVE3D
1144
1146 & 'Reflect (stick) floats that hit the surface (bottom)'
1148 coptions(is:is+14)=
' FLOAT_STICKY,'
1149#endif
1150#if defined FLOATS && defined FLOAT_VWALK && defined SOLVE3D
1151
1153 & 'Lagrangian drifters with vertical diffusion, random walk'
1156#endif
1157#ifdef FORCING_SV
1158
1160 & 'Forcing Singular Vectors Propagator'
1163 idriver=idriver+1
1164#endif
1165#if defined FORWARD_FLUXES
1166
1168 & 'Using nonlinear model Forward fluxes for Tangent/Adjoint'
1170 coptions(is:is+16)=
' FORWARD_FLUXES,'
1171#endif
1172#if defined FORWARD_MIXING && defined SOLVE3D
1173
1175 & 'Read in Forward vertical mixing for Tangent/Adjoint'
1177 coptions(is:is+16)=
' FORWARD_MIXING,'
1178#endif
1179#ifdef FORWARD_READ
1180
1182 & 'Read in Forward solution for Tangent/Adjoint'
1184 coptions(is:is+14)=
' FORWARD_READ,'
1185#endif
1186#ifdef FORWARD_RHS
1187
1189 & 'Process Forward RHS terms for Tangent/Adjoint'
1192#endif
1193#ifdef FORWARD_WRITE
1194
1196 & 'Write out Forward solution for Tangent/Adjoint'
1198 coptions(is:is+15)=
' FORWARD_WRITE,'
1199#endif
1200#if defined FRC_COUPLING && defined MODEL_COUPLING
1201
1203 & 'Atmospheric forcing fields are from ESM coupling'
1205 coptions(is:is+14)=
' FRC_COUPLING,'
1206#endif
1207#ifdef FSOBC_REDUCED
1208
1210 & 'Using free-surface data in reduced physics conditions'
1212 coptions(is:is+15)=
' FSOBC_REDUCED,'
1213#endif
1214#ifdef FT_EIGENMODES
1215
1217 & 'Finite Time Eigenmodes: Normal Modes'
1219 coptions(is:is+15)=
' FT_EIGENMODES,'
1220 idriver=idriver+1
1221#endif
1222#if defined FOUR_DVAR || defined PROPAGATOR || defined VERIFICATION
1223# ifdef FULL_GRID
1224
1226# if (defined FOUR_DVAR || defined VERIFICATION)
1227 & 'Considering observations at interior and boundary points'
1228# elif defined PROPAGATOR
1229 & 'State vector includes interior and boundary points'
1230# endif
1233# else
1234
1236# if (defined FOUR_DVAR || defined VERIFICATION)
1237 & 'Considering observations at interior points only'
1238# elif defined PROPAGATOR
1239 & 'State vector includes interior points only'
1240# endif
1243# endif
1244#endif
1245#ifdef DISTRIBUTE
1246# ifdef GATHER_SENDRECV
1248 & 'Using mpi_isend/mpi_irecv in mp_gather2d/mp_gather3d routines'
1250 coptions(is:is+17)=
' GATHER_SENDRECV,'
1251# else
1253 & 'Using mpi_gatherv in mp_gather2d/mp_gather3d routines'
1255 coptions(is:is+18)=
' !GATHER_SENDRECV,'
1256# endif
1257#endif
1258#ifdef GENERIC_DSTART
1259
1261 & 'Avoid using ''dstart'' as initial time in ADM, TLM, and RPM'
1263 coptions(is:is+16)=
' GENERIC_DSTART,'
1264#endif
1265#if defined GEOPOTENTIAL_HCONV && defined FOUR_DVAR && defined SOLVE3D
1266
1268 & 'Horizontal convolutions along geopetential surfaces'
1270 coptions(is:is+20)=
' GEOPOTENTIAL_HCONV,'
1271#endif
1272#ifdef GLS_MIXING
1273
1275 & 'Generic Length-Scale turbulence closure'
1278 ivmix=ivmix+1
1279#endif
1280#ifdef GRID_EXTRACT
1281
1283 & 'Writing output extraction history file'
1285 coptions(is:is+14)=
' GRID_EXTRACT,'
1286#endif
1287#ifdef HDF5
1288
1290 & 'Creating NetCDF-4/HDF5 format files'
1293#endif
1294#ifdef HESSIAN_FSV
1295
1297 & 'Hessian (4D-Var) Forcing Singular Vectors Propagator'
1300#endif
1301#ifdef HESSIAN_SO
1302
1304 & 'Hessian (4D-Var) Stochastic Optimals Propagator'
1307#endif
1308#ifdef HESSIAN_SV
1309
1311 & 'Hessian (4D-Var) Singular Vectors Propagator'
1314#endif
1315#if defined HOLLING_GRAZING && defined NEMURO
1316
1318 & 'Holling-type s-shaped grazing algorithm, Implicit'
1320 coptions(is:is+17)=
' HOLLING_GRAZING,'
1321#endif
1322#ifdef HYPOXIA_SRM
1323
1325 & 'Hypoxia Simple Respiration Model'
1328 ibiology=ibiology+1
1329#endif
1330#if defined ICE_MODEL && defined SOLVE3D
1331
1333 & 'Native Sea-Ice Model (Budgell; Durski and Kurapov)'
1336# ifdef ICE_ADVECT
1337
1339 & 'Including advection of ice tracers'
1342# endif
1343# ifdef ICE_ALB_EC92
1344
1346 & 'Albedo computation from Ebert and Curry'
1348 coptions(is:is+14)=
' ICE_ALB_EC92,'
1349# endif
1350# ifdef ICE_BULK_FLUXES
1351
1353 & 'Including ice terms in the bulk flux computation'
1355 coptions(is:is+17)=
' ICE_BULK_FLUXES,'
1356# endif
1357# ifdef ICE_CONVSNOW
1358
1360 & 'Conversion of flooded snow to ice'
1362 coptions(is:is+14)=
' ICE_CONVSNOW,'
1363# endif
1364# if defined ICE_EVP && defined ICE_MOMENTUM
1365
1367 & 'Elastic-viscous-plastic rheology'
1370# endif
1371# ifdef ICE_MK
1372
1374 & 'Mellor-Kantha thermodynamics'
1377# endif
1378# ifdef ICE_MOMENTUM
1379
1381 & 'Including momentum term'
1383 coptions(is:is+14)=
' ICE_MOMENTUM,'
1384# endif
1385# ifdef ICE_MOM_BULK
1386
1388 & 'Alternated ice-water stress computation'
1390 coptions(is:is+14)=
' ICE_MOM_BULK,'
1391# endif
1392# ifdef ICE_STRENGTH_QUAD
1393
1395 & 'Quadratic ice strength, a function of thickness'
1397 coptions(is:is+19)=
' ICE_STRENGTH_QUAD,'
1398# endif
1399# if defined ICE_SMOLAR && defined ICE_ADVECT
1400
1402 & 'MPDATA advection scheme'
1405# endif
1406# if defined ICE_UPWIND && defined ICE_ADVECT
1407
1409 & 'Upwind advection scheme'
1412# endif
1413#endif
1414#ifdef ICESHELF
1415
1417 & 'Include Ice Shelf Cavities'
1420#endif
1421#if defined IMPACT_INNER && \
1422 defined obs_impact && \
1423 (defined i4dvar_ana_sensitivity || \
1424 defined rbl4dvar_ana_sensitivity || \
1425 defined rbl4dvar_fct_sensitivity || \
1426 defined r4dvar_ana_sensitivity)
1427
1429 & 'Writing observations impacts for each inner loop'
1431 coptions(is:is+14)=
' IMPACT_INNER,'
1432#endif
1433#ifdef IMPLICIT_NUDGING
1434
1436 & 'Implicit nudging term in momentum radiation conditions'
1438 coptions(is:is+18)=
' IMPLICIT_NUDGING,'
1439#endif
1440#if defined IMPLICIT_VCONV && defined FOUR_DVAR && defined VCONVOLUTION
1441
1443 & 'Implicit Vertical Convolution Algorithm'
1445 coptions(is:is+16)=
' IMPLICIT_VCONV,'
1446#endif
1447#ifdef INITIALIZE_AUTOMATIC
1448
1449 IF (
master)
WRITE (
stdout,20)
'INITIALIZE_AUTOMATIC', &
1450 & 'Initialize automatic arrays in step2d for debugging'
1452 coptions(is:is+22)=
' INITIALIZE_AUTOMATIC,'
1453#endif
1454#ifdef JEDI
1456 & 'Joint Effort for Data Assimilation Integration'
1459#endif
1460#if defined LIMIT_BSTRESS && defined SOLVE3D && !defined BBL_MODEL
1461
1463 & 'Limit bottom stress to maintain bottom velocity direction'
1465 coptions(is:is+15)=
' LIMIT_BSTRESS,'
1466#endif
1467#if defined LIMIT_STFLX_COOLING && defined SOLVE3D
1468
1470 & 'Suppress further cooling if SST is at freezing point'
1472 coptions(is:is+21)=
' LIMIT_STFLX_COOLING,'
1473#endif
1474#if defined NPZD_IRON && defined IRON_LIMIT
1475
1477 & 'Include dissolved iron limitation on phytoplankton growth'
1480#endif
1481#if defined NPZD_IRON && defined IRON_LIMIT && defined IRON_RELAX
1482
1484 & 'Nudge dissolved iron over the shelf, h <= FeHmin'
1487#endif
1488#ifdef IMPULSE
1489
1491 & 'Processing Adjoint Impulse forcing'
1494#endif
1495#ifdef INNER_PRODUCT
1496
1498 & 'Tangent/Adjoint State Matrices Inner Product Test'
1500 coptions(is:is+15)=
' INNER_PRODUCT,'
1501 idriver=idriver+1
1502#endif
1503#if defined I4DVAR && !defined SPLIT_4DVAR
1504
1506 & 'Incremental, strong constraint 4D-Var data assimilation'
1509 idriver=idriver+1
1510#endif
1511#ifdef I4DVAR_ANA_SENSITIVITY
1512
1513 IF (
master)
WRITE (
stdout,20)
'I4DVAR_ANA_SENSITIVITY', &
1514 & 'I4D-Var Observations Sensitivity Analysis'
1516 coptions(is:is+24)=
' I4DVAR_ANA_SENSITIVITY,'
1517 idriver=idriver+1
1518#endif
1519#if defined INLINE_2DIO && defined DISTRIBUTE
1520
1522 & 'Processing 3D IO level by level to reduce memory needs'
1525#endif
1526#if defined IVLEV_EXPLICIT && defined NEMURO
1527
1529 & 'Ivlev Grazing algorithm, Explicit'
1531 coptions(is:is+16)=
' IVLEV_EXPLICIT,'
1532#endif
1533#if defined KANTHA_CLAYSON && (defined GLS_MIXING || defined MY25_MIXING)
1534
1536 & 'Kantha and Clayson stability function formulation'
1538 coptions(is:is+16)=
' KANTHA_CLAYSON,'
1539#endif
1540#if defined LCZ_FINAL && defined FOUR_DVAR
1541
1543 & 'Compute 4D-Var Hessian singular vectors'
1546#endif
1547#if defined LIMIT_VDIFF && \
1548 (defined gls_mixing || defined lmd_mixing || defined my25_mixing)
1549
1551 & 'Impose an upper limit on vertical diffusion coefficient'
1554#endif
1555#if defined LIMIT_VVISC && \
1556 (defined gls_mixing || defined lmd_mixing || defined my25_mixing)
1557
1559 & 'Impose an upper limit on vertical viscosity coefficient'
1562#endif
1563#ifdef LMD_BKPP
1564
1566 & 'KPP bottom boundary layer mixing'
1569#endif
1570#ifdef LMD_CONVEC
1571
1573 & 'LMD convective mixing due to shear instability'
1576#endif
1577#ifdef LMD_DDMIX
1578
1580 & 'LMD double-diffusive mixing'
1583#endif
1584#ifdef LMD_MIXING
1585
1587 & 'Large/McWilliams/Doney interior mixing'
1590 ivmix=ivmix+1
1591#endif
1592#ifdef LMD_NONLOCAL
1593
1595 & 'LMD convective nonlocal transport'
1597 coptions(is:is+14)=
' LMD_NONLOCAL,'
1598#endif
1599#ifdef LMD_RIMIX
1600
1602 & 'LMD diffusivity due to shear instability'
1605#endif
1606#ifdef LMD_SHAPIRO
1607
1609 & 'Shapiro filtering boundary layer depth'
1612#endif
1613#ifdef LMD_SKPP
1614
1616 & 'KPP surface boundary layer mixing'
1619#endif
1620#if defined LONGWAVE && defined BULK_FLUXES
1621
1623 & 'Compute net longwave radiation internally'
1626#endif
1627#if defined LONGWAVE_OUT && defined BULK_FLUXES
1628
1630 & 'Compute outgoing longwave radiation internally'
1632 coptions(is:is+14)=
' LONGWAVE_OUT,'
1633#endif
1634#ifdef MASKING
1635
1637 & 'Land/Sea masking'
1640#endif
1641#ifdef MB_BBL
1642
1644 & 'Blaas Bottom Boundary Layer'
1647 ibbl=ibbl+1
1648# ifdef MB_CALC_UB
1649
1651 & 'Internal computation of bottom orbital velocity'
1654# endif
1655# ifdef MB_CALC_ZNOT
1656
1658 & 'Internal computation of bottom roughness'
1660 coptions(is:is+14)=
' MB_CALC_ZNOT,'
1661# endif
1662# ifdef MB_Z0BIO
1663
1665 & 'Biogenic bedform roughness ripple height and length'
1668# endif
1669# ifdef MB_Z0BL
1670
1672 & 'Bedload roughness for ripples'
1675# endif
1676# ifdef MB_Z0RIP
1677
1679 & 'Bedform roughness ripple height and length'
1682# endif
1683#endif
1684#if defined MCT_LIB && defined MODEL_COUPLING
1685
1687 & 'Using Model Coupling Toolkit library'
1690#endif
1691#ifdef METADATA_REPORT
1692
1694 & 'Reports/dumps YAML metadata dictionary'
1696 coptions(is:is+10)=
' METADATA_REPORT,'
1697#endif
1698#if defined MINRES && defined FOUR_DVAR
1699
1701 & 'Minimal Residual Method for 4D-Var minimization'
1704#endif
1705#if (defined TS_DIF2 || defined TS_DIF4) && defined SOLVE3D
1706# ifdef MIX_GEO_TS
1707
1709 & 'Mixing of tracers along geopotential surfaces'
1712# endif
1713# ifdef MIX_ISO_TS
1714
1716 & 'Mixing of tracers along isopycnal surfaces'
1719# endif
1720# ifdef MIX_S_TS
1721
1723 & 'Mixing of tracers along constant S-surfaces'
1726# endif
1727#endif
1728#if (defined UV_VIS2 || defined UV_VIS4) && defined SOLVE3D
1729# ifdef MIX_GEO_UV
1730
1732 & 'Mixing of momentum along geopotential surfaces'
1735# endif
1736# ifdef MIX_S_UV
1737
1739 & 'Mixing of momentum along constant S-surfaces'
1742# endif
1743#endif
1744#ifdef MPI
1745
1747 & 'MPI distributed-memory configuration'
1750#endif
1751#if defined DISTRIBUTE
1752# if defined MULTI_THREAD
1753
1755 & 'Using mpi_init_thread with multiple thread level processing'
1757 coptions(is:is+17)=
' MULTIPLE_THREAD,'
1758# else
1759
1761 & 'Using mpi_init with single thread level processing'
1763 coptions(is:is+18)=
' !MULTIPLE_THREAD,'
1764# endif
1765#endif
1766#if defined MULTIPLE_TLM && defined TANGENT
1767
1769 & 'Create multiple TLM history files'
1771 coptions(is:is+14)=
' MULTIPLE_TLM,'
1772#endif
1773#ifdef MY25_MIXING
1774
1776 & 'Mellor/Yamada Level-2.5 mixing closure'
1779 ivmix=ivmix+1
1780#endif
1781#ifdef NEMURO
1782
1784 & 'Nemuro Lower Trophic Level Ecosystem Model'
1787 ibiology=ibiology+1
1788#endif
1789#ifdef NESTING
1790
1792 & 'Nesting grids: Composite and Refinement'
1795# ifdef NESTING_DEBUG
1796
1798 & 'Checking mass fluxes conservation in refinement'
1800 coptions(is:is+15)=
' NESTING_DEBUG,'
1801# endif
1802#endif
1803#if defined NLM_OUTER && defined WEAK_CONSTRAINT
1804
1806 & 'Using the Nonlinear model as Basic State in Outer Loop'
1809#endif
1810#ifdef NONLINEAR
1811
1813 & 'Nonlinear Model'
1816#endif
1817#if defined NO_SCORRECTION_ICE && defined ICE_MODEL && defined SOLVE3D
1818
1820 & 'No salinity correction under the ice'
1822 coptions(is:is+20)=
' NO_SCORRECTION_ICE,'
1823#endif
1824#ifdef SOLVE3D
1825# if defined NONLIN_EOS
1826
1828 & 'Nonlinear Equation of State for seawater'
1831# else
1832
1834 & 'Linear Equation of State for seawater'
1837# endif
1838#endif
1839#if defined NO_CORRECT_TRACER && defined NESTING && defined SOLVE3D
1840
1842 & 'Avoid two-way correction of coaser grid boundary tracer'
1844 coptions(is:is+19)=
' NO_CORRECT_TRACER,'
1845#endif
1846#ifdef NO_LBC_ATT
1847
1849 & 'Not checking NetCDF global attribute NLM_LBC during restart'
1852#endif
1853#if defined NO_READ_GHOST && defined DISTRIBUTE
1854
1856 & 'Not including ghost points during scattering read data'
1858 coptions(is:is+15)=
' NO_READ_GHOST,'
1859#endif
1860#ifdef NO_WRITE_GRID
1861
1863 & 'Not Writing grid arrays into NetCDF ouput files'
1865 coptions(is:is+15)=
' NO_WRITE_GRID,'
1866#endif
1867#ifdef NPZD_FRANKS
1868
1870 & 'NPZD Biological Model, Franks et al. fomulation'
1873 ibiology=ibiology+1
1874#endif
1875#ifdef NPZD_IRON
1876
1878 & 'NPZD Biological Model (Powell et al.) with iron limitation'
1881 ibiology=ibiology+1
1882#endif
1883#ifdef NPZD_POWELL
1884
1886 & 'NPZD Biological Model, Powell et al. fomulation'
1889 ibiology=ibiology+1
1890#endif
1891#if defined N2S2_HORAVG && (defined GLS_MIXING || defined MY25_MIXING)
1892
1894 & 'Horizontal smoothing of buoyancy and shear'
1897#endif
1898#ifdef OBSERVATIONS
1899
1901 & 'Processing 4D-Var observations'
1903 coptions(is:is+13)=
' OBSERVATIONS,'
1904#endif
1905#ifdef OBS_IMPACT
1906
1908 & 'Compute observation impact to the 4D-Var system'
1911#endif
1912#if defined OBS_IMPACT && defined OBS_IMPACT_SPLIT
1913
1915 & 'Separate impact due to IC, surface forcing, and OBC'
1917 coptions(is:is+18)=
' OBS_IMPACT_SPLIT,'
1918#endif
1919#if defined OBS_SPACE && defined RBL4DVAR_FCT_SENSITIVITY
1920
1922 & 'Forecast metric in observation-space instead of state-space'
1925#endif
1926#if defined OMEGA_IMPLICIT && defined SOLVE3D
1927
1929 & 'Adaptive, Courant-number based implicit vertical advection'
1931 coptions(is:is+16)=
' OMEGA_IMPLICIT,'
1932#endif
1933#ifdef NESTING
1934# ifdef ONE_WAY
1935
1937 & 'One-way nesting in refinement grids'
1940# else
1941
1943 & 'Two-way nesting in refinement grids'
1946# endif
1947#endif
1948#ifdef OUT_DOUBLE
1949
1951 & 'Double precision output fields in NetCDF files'
1954#endif
1955#ifdef OUTPUT_STATS
1956
1958 & 'Reporting NetCDF output fields statistics'
1960 coptions(is:is+14)=
' OUTPUT_STATS,'
1961#endif
1962#ifdef _OPENMP
1963
1965 & 'OpenMP parallel shared-memory directives'
1968#endif
1969#ifdef OPT_OBSERVATIONS
1970
1972 & 'Optimal Observations Driver'
1974 coptions(is:is+18)=
' OPT_OBSERVATIONS,'
1975 idriver=idriver+1
1976#endif
1977#ifdef OPT_PERTURBATION
1978
1980 & 'Optimal Perturbation Propagator'
1982 coptions(is:is+18)=
' OPT_PERTURBATION,'
1983 idriver=idriver+1
1984#endif
1985#if defined OXYGEN && defined BIO_FENNEL
1986# ifdef OCMIP_OXYGEN_SC
1987
1989 & 'Schmidt number from Keeling et al. (1998)'
1991 coptions(is:is+17)=
' OCMIP_OXYGEN_SC,'
1992# else
1993
1995 & 'Schmidt number from Wanninkhof (1992)'
1997 coptions(is:is+18)=
' !OCMIP_OXYGEN_SC,'
1998# endif
1999
2001 & 'Add oxygen dynamics'
2004#endif
2005#if defined HYPOXIA_SRM && !defined SURFACE_DO_SATURATION
2006# ifdef OCMIP_OXYGEN_SC
2007
2009 & 'Schmidt number from Keeling et al. (1998)'
2011 coptions(is:is+17)=
' OCMIP_OXYGEN_SC,'
2012# else
2013
2015 & 'Schmidt number from Wanninkhof (1992)'
2017 coptions(is:is+18)=
' !OCMIP_OXYGEN_SC,'
2018# endif
2019#endif
2020#if defined PARALLEL_IO && defined DISTRIBUTE
2021
2023 & 'Parallel I/O processing'
2026#endif
2027#if defined CARBON && defined BIO_FENNEL
2028# if defined PCO2AIR_DATA
2029
2031 & 'CO2 gas exchange from Laurent et al. (2017)'
2033 coptions(is:is+14)=
' PCO2AIR_DATA,'
2034# elif defined PCO2AIR_SECULAR
2035
2037 & 'CO2 gas exchange time-dependent evolution'
2039 coptions(is:is+17)=
' PCO2AIR_SECULAR,'
2040# endif
2041#endif
2042#ifdef PERFECT_RESTART
2043
2045 & 'Processing perfect restart variables'
2047 coptions(is:is+17)=
' PERFECT_RESTART,'
2048#endif
2049#ifdef PICARD_TEST
2050
2052 & 'Representers tangent linear model Picard iterations test'
2055 idriver=idriver+1
2056#endif
2057#if defined PIO_LIB && defined DISTRIBUTE
2058
2060 & 'Using Parallel-IO from the PIO library'
2063#endif
2064#ifdef PJ_GRADP
2065
2067 & 'Finite volume Pressure Jacobian (Lin, 1997)'
2070#endif
2071#ifdef PJ_GRADPQ2
2072
2074 & 'Quartic 2 polynomial Pressure Jacobian (Shchepetkin, 2002)'
2077#endif
2078#ifdef PJ_GRADPQ4
2079
2081 & 'Quartic 4 polynomial Pressure Jacobian (Shchepetkin, 2002)'
2084#endif
2085#if defined PRESS_COMPENSATE && defined ATM_PRESS
2086
2088 & 'Compensate for boundary data without ATM pressure effect'
2090 coptions(is:is+18)=
' PRESS_COMPENSATE,'
2091#endif
2092#if defined PO4 && defined BIO_FENNEL
2093
2095 & 'Phytoplanckton growth limited by Phosphorus'
2098#endif
2099#if defined PRIOR_BULK_FLUXES && defined BULK_FLUXES && \
2100 defined four_dvar
2101
2103 & 'Impose prior surface fluxes in other outer loops and analysis'
2105 coptions(is:is+19)=
' PRIOR_BULK_FLUXES,'
2106#endif
2107#ifdef POSITIVE_ZERO
2108
2110 & 'Impose positive zero in output data'
2112 coptions(is:is+15)=
' POSITIVE_ZERO,'
2113#endif
2114#if defined POSTERIOR_EOFS && defined WEAK_CONSTRAINT
2115
2117 & 'Estimating posterior analysis error covariace matrix EOFs'
2119 coptions(is:is+16)=
' POSTERIOR_EOFS,'
2120#endif
2121#if defined POSTERIOR_ERROR_F && defined WEAK_CONSTRAINT
2122
2124 & 'Estimating final posterior analysis error covariace matrix'
2126 coptions(is:is+16)=
' POSTERIOR_ERROR_F,'
2127#endif
2128#if defined POSTERIOR_ERROR_I && defined WEAK_CONSTRAINT
2129
2131 & 'Estimating initial posterior analysis error covariace matrix'
2133 coptions(is:is+16)=
' POSTERIOR_ERROR_F,'
2134#endif
2135#if defined POWER_LAW && defined SOLVE3D
2136
2138 & 'Power-law shape time-averaging barotropic filter'
2141#endif
2142#if !(defined PJ_GRADPQ4 || defined PJ_GRADPQ2 || defined PJ_GRADP || \
2143 defined dj_gradps) && defined solve3d
2144
2146 & 'Standard density Jacobian formulation (Song, 1998)'
2149#endif
2150#ifdef PROFILE
2151
2153 & 'Time profiling activated'
2156#endif
2157#ifdef PSEUDOSPECTRA
2158
2160 & 'Pseudospectra Propagator'
2162 coptions(is:is+15)=
' PSEUDOSPECTRA,'
2163#endif
2164#ifdef QCORRECTION
2165
2167 & 'Surface net heat flux correction'
2170#endif
2171#ifdef OBSERVATIONS
2172# ifdef RADIAL_ANGLE_CCW_EAST
2173
2174 IF (
master)
WRITE (
stdout,20)
'RADIAL_ANGLE_CCW_EAST', &
2175 & 'Radial observations as an azimuth counterclockwise from EAST'
2177 coptions(is:is+23)=
' RADIAL_ANGLE_CCW_EAST,'
2178# else
2179 IF (
master)
WRITE (
stdout,20)
'!RADIAL_ANGLE_CCW_EAST', &
2180 & 'Radial observations as an azimuth clockwise from NORTH'
2182 coptions(is:is+24)=
' !RADIAL_ANGLE_CCW_EAST,'
2183# endif
2184#endif
2185#if defined NESTING && defined REFINE_BOUNDARY
2186
2188 & 'Fine-to-Coarse momentum averaging at coarse grid boundary'
2190 coptions(is:is+17)=
' REFINE_BOUNDARY,'
2191#endif
2192#if defined REMOVE_LAPACK_GOTOS && defined FOUR_DVAR
2193
2195 & 'Modernizing adapted LAPACK routines by replacing GOTOs'
2197 coptions(is:is+21)=
' REMOVE_LAPACK_GOTOS,'
2198#endif
2199#if defined OXYGEN && defined BIO_FENNEL
2200# if defined OCMIP_OXYGEN_SC
2201
2203 & 'Schmidt number from Keeling et al. (1998)'
2205 coptions(is:is+17)=
' OCMIP_OXYGEN_SC,'
2206# elif defined RW14_OXYGEN_SC
2207
2209 & 'O2 Schmidt number from Wanninkhof (2014)'
2211 coptions(is:is+16)=
' RW14_OXYGEN_SC,'
2212# else
2213
2215 & 'Schmidt number from Wanninkhof (1992)'
2217 coptions(is:is+17)=
' !RW14_OXYGEN_SC,'
2218# endif
2219#endif
2220#if defined GLS_MIXING || defined MY25_MIXING
2221# if defined K_C2ADVECTION
2222
2224 & 'Second-order centered differences advection of TKE fields'
2226 coptions(is:is+15)=
' K_C2ADVECTION,'
2227# elif defined K_C4ADVECTION
2228
2230 & 'Fourth-order centered differences advection of TKE fields'
2232 coptions(is:is+15)=
' K_C4ADVECTION,'
2233# else
2234
2236 & 'Third-order upstream advection of TKE fields'
2239# endif
2240# ifdef TKE_DIF2
2241
2243 & 'Harmonic mixing of TKE fields'
2246# endif
2247# ifdef TKE_DIF4
2248
2250 & 'Biharmonic mixing of TKE fields'
2253# endif
2254#endif
2255#ifdef RADIATION_2D
2256
2258 & 'Use tangential phase speed in radiation conditions'
2260 coptions(is:is+14)=
' RADIATION_2D,'
2261#endif
2262#if defined RAMP_TIDES && (defined SSH_TIDES || defined UV_TIDES)
2263
2265 & 'Ramping tidal forcing for one day'
2268#endif
2269#if defined RBL4DVAR && !defined SPLIT_RBL4DVAR
2270
2272 & 'Strong/Weak constraint RBL4D-VAR data assimilation'
2275 idriver=idriver+1
2276#endif
2277#ifdef RBL4DVAR_ANA_SENSITIVITY
2278
2279 IF (
master)
WRITE (
stdout,20)
'RBL4DVAR_ANA_SENSITIVITY', &
2280 & 'RBL4D-VAR analysis observation sensitivity'
2282 coptions(is:is+26)=
' RBL4DVAR_ANA_SENSITIVITY,'
2283 idriver=idriver+1
2284#endif
2285#ifdef RBL4DVAR_FCT_SENSITIVITY
2286
2287 IF (
master)
WRITE (
stdout,20)
'RBL4DVAR_FCT_SENSITIVITY', &
2288 & 'RBL4D-VAR forecast observation sensitivity'
2290 coptions(is:is+26)=
' RBL4DVAR_FCT_SENSITIVITY,'
2291 idriver=idriver+1
2292#endif
2293#if defined READ_WATER && defined MASKING
2294
2296 & 'Reading data at water points only'
2299#endif
2300#if defined RECOMPUTE_4DVAR && defined FOUR_DVAR
2301
2303 & 'Recomputing 4D-Var during data assimilation analysis'
2305 coptions(is:is+17)=
' RECOMPUTE_4DVAR,'
2306#endif
2307#if defined DISTRIBUTE
2308# if defined REDUCE_ALLGATHER
2309
2311 & 'Using mpi_allgather in mp_reduce routine'
2313 coptions(is:is+18)=
' REDUCE_ALLGATHER,'
2314# elif defined REDUCE_ALLREDUCE
2315
2317 & 'Using mpi_allreduce in mp_reduce routine'
2319 coptions(is:is+18)=
' REDUCE_ALLREDUCE,'
2320# elif defined REDUCE_SENDRECV
2321
2323 & 'Using mpi_isend/mpi_recv in mp_reduce routine'
2325 coptions(is:is+17)=
' REDUCE_SENDRECV,'
2326# endif
2327#endif
2328#ifdef REGCM_COUPLING
2329
2331 & 'Atmosphere coupling with RegCM'
2333 coptions(is:is+16)=
' REGCM_COUPLING,'
2334 iatms=iatms+1
2335#endif
2336#ifdef RED_TIDE
2337
2339 & 'Red tide biological model'
2342 ibiology=ibiology+1
2343#endif
2344#if defined REGRESS_STARTCLOCK && defined MODEL_COUPLING && \
2345 defined esmf_lib
2346
2348 & 'Regressing start clock by one coupling interval'
2350 coptions(is:is+20)=
' REGRESS_STARTCLOCK,'
2351#endif
2352#ifdef REGRID_SHAPIRO
2353
2355 & 'Applying Shapiro filter to regridded data'
2357 coptions(is:is+16)=
' REGRID_SHAPIRO,'
2358#endif
2359#if defined RIVER_DON && defined BIO_FENNEL
2360
2362 & 'DON non-skinking source from rivers'
2365#endif
2366#ifdef ROMS_STDOUT
2367
2369 & "Writes ROMS standard output into 'log.roms' file"
2372#endif
2373#ifdef R_SYMMETRY
2374
2376 & 'Representers Matrix Symmetry Test'
2379 idriver=idriver+1
2380#endif
2381#if defined LMD_MIXING
2382# ifdef RI_HORAVG
2383
2385 & 'Smooth Richardson number horizontally'
2388# endif
2389# ifdef RI_VERAVG
2390
2392 & 'Smooth Richardson number vertically'
2395# endif
2396#endif
2397#if defined SOLVE3D && \
2398 (defined gls_mixing || defined lmd_mixing || defined my25_mixing)
2399# ifdef RI_SPLINES
2400
2402 & 'Parabolic Spline Reconstruction for Richardson Number'
2405# endif
2406#endif
2407#if !(defined PJ_GRADPQ4 || defined PJ_GRADPQ2 || defined PJ_GRADP || \
2408 defined dj_gradps) && defined rho_surf && defined solve3d
2409
2411 & 'Include difference between rho0 and surface density'
2414#endif
2415#if defined ROLLER_MONO && defined WEC_ROLLER && defined WEC_VF
2416
2418 & 'Wave energy roller from monochromatic waves'
2421#endif
2422#ifdef ROLLER_RENIERS && defined WEC_ROLLER && defined WEC_VF
2423
2425 & 'Wave energy roller based on Reniers 2004'
2427 coptions(is:is+16)=
' ROLLER_RENIERS,'
2428#endif
2429#ifdef ROLLER_SVENDSEN && defined WEC_ROLLER && defined WEC_VF
2430
2432 & 'Wave energy roller based on Svendsen 1984'
2434 coptions(is:is+17)=
' ROLLER_SVENDSEN,'
2435#endif
2436#if defined RPCG && defined WEAK_CONSTRAINT
2437
2439 & 'Restricted B-preconditioned Lanczos minimization solver'
2442#endif
2443#if defined RP_AVERAGES && defined TL_IOMS
2444
2446 & 'Writing out time-averaged representer model fields'
2449#endif
2450#ifdef RPM_DRIVER
2451
2453 & 'Generic representers tangent linear model driver'
2456 idriver=idriver+1
2457#endif
2458#ifdef RPM_RELAXATION
2459
2461 & 'Diffusive Relaxation of RPM in Picard Iterations'
2463 coptions(is:is+16)=
' RPM_RELAXATION,'
2464#endif
2465#ifdef RST_SINGLE
2466
2468 & 'Single precision fields in restart NetCDF file'
2471#else
2472
2474 & 'Double precision fields in restart NetCDF file'
2477#endif
2478#if defined R4DVAR && !defined SPLIT_R4DVAR
2479
2481 & 'Strong/Weak constraint, R4D-Var data assimilation'
2484 idriver=idriver+1
2485#endif
2486#ifdef R4DVAR_ANA_SENSITIVITY
2487
2488 IF (
master)
WRITE (
stdout,20)
'R4DVAR_ANA_SENSITIVITY', &
2489 & 'R4D-Var analysis observation sensitivity'
2491 coptions(is:is+24)=
' R4DVAR_ANA_SENSITIVITY,'
2492 idriver=idriver+1
2493#endif
2494#ifdef SALINITY
2495
2497 & 'Using salinity'
2500#endif
2501#ifdef SANITY_CHECK
2502
2504 & 'Tangent Linear and Adjoint Models Correctness Check'
2506 coptions(is:is+14)=
' SANITY_CHECK,'
2507 idriver=idriver+1
2508#endif
2509#ifdef DISTRIBUTE
2510# ifdef SCATTER_BCAST
2512 & 'Using mpi_bcast in mp_scatter2d/mp_scatter3d routines'
2514 coptions(is:is+15)=
' SCATTER_BCAST,'
2515# else
2517 & 'Using mpi_scatterv in mp_scatter2d/mp_scatter3d routines'
2519 coptions(is:is+16)=
' !SCATTER_BCAST,'
2520# endif
2521#endif
2522#ifdef SCORRECTION
2523
2525 & 'Surface salinity flux correction'
2528#endif
2529#ifdef SEDIMENT
2530
2532 & 'Cohesive and noncohesive sediments'
2535# ifdef SED_DENS
2536
2538 & 'Include density of suspended sediment in equation of state'
2541# endif
2542# ifdef SED_MORPH
2543
2545 & 'Allow bottom model elevation to evolve'
2548# endif
2549# ifdef SUSPLOAD
2550
2552 & 'Activate suspended sediment transport'
2555# endif
2556#endif
2557#if defined STD_MODEL && defined FOUR_DVAR
2558
2560 & 'Background error covariance Standard Deviation model'
2563#endif
2564#if defined STEP2D_FB_AB3_AM4
2565
2567 & 'Generalized Forward-Backward AB3-AM4 stepping scheme'
2569 coptions(is:is+19)=
' STEP2D_FB_AB3_AM4,'
2570#elif defined STEP2D_FB_LF_AM3
2571
2573 & 'Predictor/Corrector Forward-Backward LF-AM3 stepping scheme'
2575 coptions(is:is+18)=
' STEP2D_FB_LF_AM3,'
2576#else
2577
2579 & 'Predictor/Corrector LF-AM3 stepping scheme'
2581 coptions(is:is+15)=
' STEP2D_LF_AM3,'
2582#endif
2583#ifdef SG_BBL
2584
2586 & 'Styles and Glenn Bottom Boundary Layer'
2589 ibbl=ibbl+1
2590# ifdef SG_CALC_UB
2591
2593 & 'Internal computation of bottom orbital velocity'
2596# endif
2597# ifdef SG_CALC_ZNOT
2598
2600 & 'Internal computation of bottom roughness'
2602 coptions(is:is+14)=
' SG_CALC_ZNOT,'
2603# endif
2604# ifdef SG_LOGINT
2605
2607 & 'Bottom currents logarithmic interpolation'
2610# endif
2611#endif
2612#ifdef SINGLE_PRECISION
2613
2615 & 'Single precision arithmetic numerical kernel'
2617 coptions(is:is+18)=
' SINGLE_PRECISION,'
2618#endif
2619#if defined SKIP_NLM && defined SENSITIVITY_4DVAR
2620
2622 & 'Skipping running NLM, reading NLM state trajectory'
2625#endif
2626#ifdef SPECTRUM_STOKES
2627
2629 & 'Stokes drift estimated from wave spectrum'
2631 coptions(is:is+17)=
' SPECTRUM_STOKES,'
2632#endif
2633#ifdef SRELAXATION
2634
2636 & 'Surface salinity relaxation as surface flux'
2639#endif
2640#ifdef SOLAR_SOURCE
2641
2643 & 'Solar Radiation Source Term'
2645 coptions(is:is+14)=
' SOLAR_SOURCE,'
2646#endif
2647#ifdef SOLVE3D
2648
2650 & 'Solving 3D Primitive Equations'
2653#endif
2654#ifdef SO_SEMI
2655
2657 & 'Stochastic Optimals Propagator, Semi-norm Estimation'
2660 idriver=idriver+1
2661#endif
2662#ifdef SO_TRACE
2663
2665 & 'Stochastic Optimals Propagator, Randomized Trace Estimation'
2668 idriver=idriver+1
2669#endif
2670#ifdef SO_SEMI
2671# ifdef SO_SEMI_WHITE
2672
2674 & 'Stochastic Optimals, white noise processes'
2676 coptions(is:is+15)=
' SO_SEMI_WHITE,'
2677# else
2678
2680 & 'Stochastic Optimals, red noise processes'
2682 coptions(is:is+16)=
' !SO_SEMI_WHITE,'
2683# endif
2684#endif
2685#ifdef SPLIT_I4DVAR
2686
2688 & 'Incremental, strong constraint Split 4D-Var data assimilation'
2690 coptions(is:is+14)=
' SPLIT_I4DVAR,'
2691 idriver=idriver+1
2692#endif
2693#ifdef SPLIT_RBL4DVAR
2694
2696 & 'Strong/Weak constraint Split RBL4D-VAR data assimilation'
2698 coptions(is:is+16)=
' SPLIT_RBL4DVAR,'
2699 idriver=idriver+1
2700#endif
2701#ifdef SPLIT_R4DVAR
2702
2704 & 'Strong/Weak constraint, Split R4D-Var data assimilation'
2706 coptions(is:is+14)=
' SPLIT_R4DVAR,'
2707 idriver=idriver+1
2708#endif
2709#ifdef SPLIT_SP4DVAR
2710
2712 & 'Weak Constraint, Saddle-Point Split 4D-Var Data Assimilation'
2714 coptions(is:is+15)=
' SPLIT_SP4DVAR,'
2715 idriver=idriver+1
2716#endif
2717#if defined SP4DVAR && !defined SPLIT_4DVAR
2718
2720 & 'Weak Constraint, Saddle-Point 4D-Var Data Assimilation'
2723 idriver=idriver+1
2724#endif
2725#ifdef SPHERICAL
2726
2728 & 'Spherical grid configuration'
2731#endif
2732#if defined SPLINES_VCONV && defined FOUR_DVAR && defined VCONVOLUTION
2733
2735 & 'Implicit, Parabolic Splines Vertical Convolution Algorithm'
2737 coptions(is:is+16)=
' SPLINES_VCONV,'
2738#endif
2739#if defined SPLINES_VDIFF && defined SOLVE3D
2740
2742 & 'Parabolic Spline Reconstruction for Vertical Diffusion'
2744 coptions(is:is+15)=
' SPLINES_VDIFF,'
2745#endif
2746#if defined SPLINES_VVISC && defined SOLVE3D
2747
2749 & 'Parabolic Spline Reconstruction for Vertical Viscosity'
2751 coptions(is:is+15)=
' SPLINES_VVISC,'
2752#endif
2753#if defined SSH_TIDES
2754
2756 & 'Adding tidal elevation to SSH climatology'
2759#endif
2760#if defined STEP2D_CORILIS && defined SOLVE3D && \
2761 (defined step2d_fb_ab3_am4 || defined step2d_fb_lf_am3)
2762
2764 & 'Adding Coriolis force to barotropic kernel in 3D set-up'
2766 coptions(is:is+16)=
' STEP2D_CORILIS,'
2767#endif
2768#ifdef SSW_BBL
2769
2771 & 'Styles and Glenn Bottom Boundary Layer - modified'
2774 ibbl=ibbl+1
2775# ifdef SSW_CALC_UB
2776
2778 & 'Internal computation of bottom orbital velocity'
2781# endif
2782# ifdef SSW_CALC_ZNOT
2783
2785 & 'Internal computation of bottom roughness'
2787 coptions(is:is+14)=
' SSW_CALC_ZNOT,'
2788# endif
2789# ifdef SSW_FORM_DRAG_COR
2790
2792 & 'Form drag coefficient'
2794 coptions(is:is+19)=
' SSW_FORM_DRAG_COR,'
2795# endif
2796# ifdef SSW_ZOBIO
2797
2799 & 'Biogenic bedfrom roughness from ripples'
2802# endif
2803# ifdef SSW_ZOBL
2804
2806 & 'Bedload roughness from ripples'
2809# endif
2810# ifdef SSW_ZORIP
2811
2813 & 'Bedfrom roughness from ripples'
2816# endif
2817# ifdef SSW_LOGINT
2818
2820 & 'Bottom currents logarithmic interpolation'
2823# endif
2824# ifdef SSW_LOGINT_WBL
2825
2827 & 'Bottom currents logarithmic interpolation at wbl'
2829 coptions(is:is+16)=
' SSW_LOGINT_WBL,'
2830# endif
2831# ifdef SSW_LOGINT_DIRECT
2832
2834 & 'Bottom currents logarithmic interpolation at user elev'
2836 coptions(is:is+19)=
' SSW_LOGINT_DIRECT,'
2837# endif
2838#endif
2839#ifdef STATIONS
2840
2842 & 'Writing out station data'
2845#endif
2846#if defined STATIONS_CGRID && defined STATIONS
2847
2849 & 'Extracting station data at native C-grid locations'
2851 coptions(is:is+16)=
' STATIONS_CGRID,'
2852#endif
2853#ifdef STOCHASTIC_OPT
2854
2856 & 'Stochastic Optimals Propagator'
2858 coptions(is:is+16)=
' STOCHASTIC_OPT,'
2859 idriver=idriver+1
2860# ifdef STOCH_OPT_WHITE
2861
2863 & 'Stochastic Optimals, white noise processes'
2865 coptions(is:is+17)=
' STOCH_OPT_WHITE,'
2866# else
2867
2869 & 'Stochastic Optimals, red noise processes'
2871 coptions(is:is+18)=
' !STOCH_OPT_WHITE,'
2872# endif
2873#endif
2874#if defined SURFACE_DO_SATURATION && defined HYPOXIA_SRM
2875
2876 IF (
master)
WRITE (
stdout,20)
'SURFACE_DO_SATURATION', &
2877 & 'Use surface dissolved oxygen saturation'
2879 coptions(is:is+23)=
' SURFACE_DO_SATURATION,'
2880#endif
2881#if defined SUBOBJECT_DEALLOCATION
2882
2883 IF (
master)
WRITE (
stdout,20)
'SUBOBJECT_DEALLOCATION', &
2884 & 'Deallocate each variable in structure objects separately'
2886 coptions(is:is+24)=
' SUBOBJECT_DEALLOCATION,'
2887#endif
2888#if defined SUPPRESS_REPORT && defined SPLIT_4DVAR
2889
2891 & 'Suppress report of repetitive configuration information'
2893 coptions(is:is+17)=
' SUPPRESS_REPORT,'
2894#endif
2895#if defined SURFACE_STREAMING && defined WEC_VF
2896
2898 & 'Wave current streaming term'
2900 coptions(is:is+18)=
' SURFACE_STREAMING,'
2901#endif
2902#ifdef SWAN_COUPLING
2903
2905 & 'Two-way SWAN/ROMS coupling'
2907 coptions(is:is+15)=
' SWAN_COUPLING,'
2908#endif
2909#if defined CARBON && defined BIO_FENNEL
2910# ifdef TALK_NONCONSERV
2911
2913 & 'Alkalinity is affected by changes in nitrate or ammonium'
2915 coptions(is:is+17)=
' TALK_NONCONSERV,'
2916# else
2917
2919 & 'Alkalinity is passive and unaffected by nitrate or ammonium'
2921 coptions(is:is+18)=
' !TALK_NONCONSERV,'
2922# endif
2923#endif
2924#ifdef TANGENT
2925
2927 & 'Tangent Linear Model'
2930#endif
2931#ifdef TIDE_GENERATING_FORCES
2932
2933 IF (
master)
WRITE (
stdout,20)
'TIDE_GENERATING_FORCES', &
2934 & 'Adding astronomical TGF term to pressure gradient'
2936 coptions(is:is+24)=
' TIDE_GENERATING_FORCES,'
2937#endif
2938#if defined TIME_CONV && defined WEAK_CONSTRAINT
2939
2941 & 'Weak-constraint 4D-Var time convolution'
2944#endif
2945#if defined TIME_INTERP && defined MODEL_COUPLING
2946
2948 & 'Time interpolation from imported coupling snapshots data'
2951#endif
2952#if defined TIME_INTERP_FLUX && defined NESTING && defined SOLVE3D
2953
2955 & 'Time interpolate coaser grid mass flux in refinement'
2957 coptions(is:is+18)=
' TIME_INTERP_FLUX,'
2958#endif
2959#if defined TL_AVERAGES && defined TANGENT
2960
2962 & 'Writing out time-averaged tangent linear model fields'
2965#endif
2966#ifdef TLM_DRIVER
2967
2969 & 'Generic tangent linear model driver'
2972 idriver=idriver+1
2973#endif
2974#if defined GLS_MIXING && defined TKE_WAVEDISS
2975
2977 & 'Wave breaking surface tke flux based on wave amplitude'
2979 coptions(is:is+14)=
' TKE_WAVEDISS,'
2980#endif
2981#ifdef TL_IOMS
2982
2984 & 'Representers Tangent Linear Model'
2987#endif
2988#ifdef TLM_CHECK
2989
2991 & 'Tangent Linear Model Linearization Check'
2994#endif
2995#if defined TRACING && defined PROFILE
2996
2998 & 'Tracing sequence of routine calls for debugging'
3001#endif
3002#ifdef SOLVE3D
3003# if defined T_PASSIVE
3004
3006 & 'Advecting and diffusing inert passive tracer'
3009# endif
3010# if defined TS_MIX_CLIMA && \
3011 (defined ts_dif2 || defined ts_dif4)
3012
3014 & 'Horizontal diffusion of tracer perturbation (T-Tclm)'
3016 coptions(is:is+14)=
' TS_MIX_CLIMA,'
3017# endif
3018# if defined TS_MIX_MAX_SLOPE && defined MIX_ISO_TS && \
3019 (defined ts_dif2 || defined ts_dif4)
3020
3022 & 'Maximum density slope in isopycnal diffusion'
3024 coptions(is:is+18)=
' TS_MIX_MAX_SLOPE,'
3025# endif
3026# if defined TS_MIX_MAX_SLOPE && defined MIX_ISO_TS && \
3027 (defined ts_dif2 || defined ts_dif4)
3028
3030 & 'Minimum density stratification in isopycnal diffusion'
3032 coptions(is:is+18)=
' TS_MIX_MAX_STRAT,'
3033# endif
3034# if defined TS_MIX_STABILITY && \
3035 (defined ts_dif2 || defined ts_dif4)
3036
3038 & 'Weighting diffusion between two time levels'
3040 coptions(is:is+18)=
' TS_MIX_STABILITY,'
3041# endif
3042# ifdef TS_MPDATA_LIMIT
3043
3045 & 'Further limiter in upwind corrector fluxes for stability'
3047 coptions(is:is+17)=
' TS_MPDATA_LIMIT,'
3048# endif
3049#endif
3050#if defined TS_DIF2 && defined SOLVE3D
3051
3053 & 'Harmonic mixing of tracers'
3056#endif
3057#if defined TS_DIF4 && defined SOLVE3D
3058
3060 & 'Biharmonic mixing of tracers'
3063#endif
3064#ifdef TS_FIXED
3065
3067 & 'Diagnostic configuration, no evolution of tracer'
3070#endif
3071#if defined TS_SMAGORINSKY && (defined TS_DIF2 || defined TS_DIF4)
3072
3074 & 'Smagorinksy-like time-dependent diffusion coefficients'
3076 coptions(is:is+16)=
' TS_SMAGORINSKY,'
3077#endif
3078#ifdef UV_ADV
3079
3081 & 'Advection of momentum'
3084#endif
3085#ifdef UV_COR
3086
3088 & 'Coriolis term'
3091#endif
3092#ifdef UV_DESTAGGERED
3093
3095 & 'Currents destaggering to cell-center for data assimilation'
3097 coptions(is:is+16)=
' UV_DESTAGGERED,'
3098#endif
3099#ifdef UV_ADV
3100# ifdef UV_C2ADVECTION
3101
3103 & 'Second-order centered differences advection of momentum'
3105 coptions(is:is+16)=
' UV_C2ADVECTION,'
3106 ivelhadv=ivelhadv+1
3107 ivelvadv=ivelvadv+1
3108# endif
3109# if defined UV_C4ADVECTION || defined UV_U3ADV_SPLIT
3110
3112 & 'Fourth-order centered differences advection of momentum'
3114 coptions(is:is+16)=
' UV_C4ADVECTION,'
3115 ivelhadv=ivelhadv+1
3116 ivelvadv=ivelvadv+1
3117# endif
3118# ifdef SOLVE3D
3119# if !(defined UV_C2ADVECTION || defined UV_C4ADVECTION)
3120
3122 & 'Third-order upstream horizontal advection of 3D momentum'
3124 coptions(is:is+17)=
' UV_U3HADVECTION,'
3125 ivelhadv=ivelhadv+1
3126# endif
3127# if !(defined UV_C2ADVECTION || defined UV_C4ADVECTION || \
3128 defined uv_sadvection)
3129
3131 & 'Fourth-order centered vertical advection of momentum'
3133 coptions(is:is+16)=
' UV_C4VADVECTION,'
3134 ivelvadv=ivelvadv+1
3135# endif
3136# ifdef UV_KIRBY
3138 & 'Compute uwave and vwave Kirby avg velocities'
3141# endif
3142# ifdef UV_SADVECTION
3143
3145 & 'Parabolic splines vertical advection of momentum'
3147 coptions(is:is+15)=
' UV_SADVECTION,'
3148 ivelvadv=ivelvadv+1
3149# endif
3150# ifdef UV_U3ADV_SPLIT
3151
3153 & 'Split third-order upstream advection of momentum'
3155 coptions(is:is+16)=
' UV_U3ADV_SPLIT,'
3156# endif
3157# endif
3158#endif
3159#ifdef UV_DRAG_GRID
3160
3162# if defined UV_LOGDRAG || defined BBL_MODEL
3163 & 'Spatially varying bottom roughness length'
3164# elif defined UV_LDRAG
3165 & 'Spatially varying linear drag coefficient'
3166# elif defined UV_QDRAG
3167 & 'Spatially varying quadratic drag coefficient'
3168# endif
3170 coptions(is:is+14)=
' UV_DRAG_GRID,'
3171#endif
3172#ifdef UV_LDRAG
3173
3175 & 'Linear bottom stress'
3178 ibbl=ibbl+1
3179#endif
3180#ifdef UV_LOGDRAG
3181
3183 & 'Logarithmic bottom stress'
3186 ibbl=ibbl+1
3187#endif
3188#ifdef UV_QDRAG
3189
3191 & 'Quadratic bottom stress'
3194 ibbl=ibbl+1
3195#endif
3196#if defined UV_TIDES
3197
3199 & 'Add tidal currents to 2D momentum climatologies'
3202#endif
3203#ifdef UV_VIS2
3204
3206 & 'Harmonic mixing of momentum'
3209#endif
3210#ifdef UV_VIS4
3211
3213 & 'Biharmonic mixing of momentum'
3216#endif
3217#if defined UV_SMAGORINSKY && (defined UV_VIS2 || defined UV_VIS4)
3218
3220 & 'Smagorinksy-like time-dependent viscosity coefficients'
3222 coptions(is:is+16)=
' UV_SMAGORINSKY,'
3223#endif
3224#if defined VAR_RHO_2D && defined SOLVE3D
3225
3227 & 'Variable density barotropic mode'
3230#endif
3231#if defined UV_VIS2 || defined UV_VIS4
3232# ifdef VISC_GRID
3233
3235 & 'Horizontal viscosity coefficient scaled by grid size'
3238# endif
3239#endif
3240#if defined VCONVOLUTION && defined FOUR_DVAR && defined SOLVE3D
3241
3243 & 'Include vertical correlations in convolutions'
3245 coptions(is:is+14)=
' VCONVOLUTION,'
3246#endif
3247#ifdef VERIFICATION
3248
3250 & 'Proccess model solution at observation locations'
3252 coptions(is:is+14)=
' VERIFICATION,'
3253#endif
3254#if defined FLOATS && defined FLOAT_VWALK && defined SOLVE3D
3255# ifdef VWALK_FORWARD
3256
3258 & 'Lagrangian drifters, forward stepping random walk'
3260 coptions(is:is+15)=
' VWALK_FORWARD,'
3261# else
3262
3264 & 'Lagrangian drifters, predictor/corrector random walk'
3266 coptions(is:is+16)=
' !VWALK_FORWARD,'
3267# endif
3268#endif
3269#if defined VISC_3DCOEF
3270
3272 & 'Horizontal, time-dependent 3D viscosity coefficient'
3275#endif
3276#ifdef WAVE_MIXING
3277
3279 & 'Enhanced veritcal mixing from waves term'
3282#endif
3283#if defined WDISS_THORGUZA && defined WEC_VF
3284
3286 & 'Wave energy dissipation computed from Thorton/Guza 1986'
3288 coptions(is:is+16)=
' WDISS_THORGUZA,'
3289#endif
3290#if defined WDISS_CHURTHOR && defined WEC_VF
3291
3293 & 'Wave energy dissipation computed from Church/Thorton 1986'
3295 coptions(is:is+16)=
' WDISS_CHURTHOR,'
3296#endif
3297#ifdef WDISS_WAVEMOD
3298
3300 & 'Wave energy dissipation acquired from coupled wave model'
3302 coptions(is:is+15)=
' WDISS_WAVEMOD,'
3303#endif
3304#ifdef WAV_COUPLING
3305
3307 & 'Two-way wave-ocean models coupling'
3309 coptions(is:is+13)=
' WAV_COUPLING,'
3310#endif
3311#ifdef WEAK_CONSTRAINT
3312
3314 & 'Activated weak constraint assimilation set-up'
3316 coptions(is:is+17)=
' WEAK_CONSTRAINT,'
3317#endif
3318#if defined WEAK_NOINTERP && defined WEAK_CONSTRAINT
3319
3321 & 'Avoid time interpolation in weak constraint forcing'
3323 coptions(is:is+15)=
' WEAK_NOINTERP,'
3324#endif
3325#ifdef WEC_VF
3326
3328 & 'Vortex Force wave current interaction'
3331 nearshore=nearshore+1
3332#endif
3333#if defined WRITE_WATER && defined MASKING
3334
3336 & 'Writing data at water points only'
3339#endif
3340#ifdef WET_DRY
3341
3343 & 'Wetting and drying activated'
3346#endif
3347#ifdef WIND_MINUS_CURRENT && defined BULK_FLUXES && defined SOLVE3D
3348
3350 & 'Compute effective wind by removing surface ocean current'
3352 coptions(is:is+20)=
' WIND_MINUS_CURRENT,'
3353#endif
3354#ifdef WIND_WAVES
3355
3357 & 'Wind-induced wave data available'
3360#endif
3361#if !(defined PJ_GRADPQ4 || defined PJ_GRADPQ2 || defined PJ_GRADP || \
3362 defined dj_gradps) && defined wj_gradp
3363
3365 & 'Weighted Jacobians pressure gradient adjustment'
3368#endif
3369#ifdef WRF_COUPLING
3370
3372 & 'Atmosphere coupling with WRF'
3374 coptions(is:is+14)=
' WRF_COUPLING,'
3375 iatms=iatms+1
3376# ifdef WRF_TIMEAVG
3377
3379 & 'WRF Exports time-averaged fields over the coupling interval'
3382# endif
3383#endif
3384#if defined WTYPE_GRID && \
3385 (defined
lmd_skpp || defined solar_source) && \
3386
3387
3389 & 'Spatially varying Jerlov water type index'
3392#endif
3393#if defined ZETA_ELLIPTIC && defined BALANCE_OPERATOR && \
3394 defined four_dvar
3395
3397 & 'Solving SSH elliptic equation in balance operator'
3399 coptions(is:is+15)=
' ZETA_ELLIPTIC,'
3400#endif
3401#ifdef ZOS_HSIG
3402
3404 & 'Wave amplitude used for Zos calculation'
3407#endif
3408
3409
3410
3411
3412
3413
3415
3416
3417
3418
3419
3420
3421
3422 IF (
master.and.(ivmix.gt.1))
THEN
3424 30 FORMAT (/,' CHECKDEFS - only one vertical closure scheme', &
3425 & ' is allowed.')
3427 END IF
3428
3429
3430
3431 IF (
master.and.(ibbl.gt.1))
THEN
3433 40 FORMAT (/,' CHECKDEFS - only one bottom stress formulation is', &
3434 & ' allowed.')
3436 END IF
3437
3438
3439
3440 IF (
master.and.(ibbl.eq.0))
THEN
3442 50 FORMAT (/,' CHECKDEFS - no bottom stress formulation is', &
3443 & ' selected.')
3445 END IF
3446
3447
3448
3449 IF (
master.and.(ibiology.gt.1))
THEN
3451 60 FORMAT (/,' CHECKDEFS - only one biology MODULE is allowed.')
3453 END IF
3454
3455
3456
3457 IF (
master.and.(idriver.gt.1))
THEN
3459 70 FORMAT (/,' CHECKDEFS - only one model example is allowed.')
3461 END IF
3462
3463#ifndef SOLVE3D
3464
3465
3466
3470 80 FORMAT (/,' CHECKDEFS - explicit time-step splitting is ', &
3471 & ' inconsistent.', &
3472 & /,13x,'Change parameter NDTFAST to unity.')
3474 END IF
3475 END DO
3476#endif
3477#if defined ADJOINT && defined _OPENMP
3480 90 FORMAT (/,' CHECKDEFS - cannot run the adjoint model in', &
3481 & ' shared-memory mode.')
3483 END IF
3484#endif
3485#if defined NEMURO && defined HOLLING_GRAZING && defined IVLEV_EXPLICIT
3486
3487
3488
3491 100 FORMAT (/,' CHECKDEFS - More than one grazing algorithm', &
3492 & ' selected for Nemuro model.')
3494 END IF
3495#endif
3496#if defined FOUR_DVAR && defined VCONVOLUTION
3497# if defined IMPLICIT_VCONV && defined SPLINES_VCONV
3498
3499
3500
3503 110 FORMAT (/,' CHECKDEFS - More than one vertical convolution', &
3504 & ' algorithm selected.')
3506 END IF
3507# endif
3508#endif
3509#if defined MODEL_COUPLING && (defined ESMF_LIB && defined MCT_LIB)
3512 120 FORMAT (/,' CHECKDEFS - More than one coupling library', &
3513 & ' selected.')
3515 END IF
3516#endif
3517#if defined POSTERIOR_ERROR_F && defined POSTERIOR_ERROR_I && \
3518 defined weak_constraint
3521 130 FORMAT (/,' CHECKDEFS - Both initial and final posterior', &
3522 & ' error covariance analysis selected, choose one.')
3524 END IF
3525#endif
3526#ifdef UV_ADV
3527
3528
3529
3530 IF (
master.and.(ivelhadv.gt.1))
THEN
3531 WRITE (
stdout,140)
'horizontal',
'momentum',
'ivelHadv =',ivelhadv
3533 END IF
3534# ifdef SOLVE3D
3535 IF (
master.and.(ivelvadv.gt.1))
THEN
3536 WRITE (
stdout,140)
'vertical',
'momentum',
'ivelVadv =',ivelvadv
3538 END IF
3539# endif
3540#endif
3541 140 FORMAT (/,' CHECKDEFS - only one ',a,' advection scheme', &
3542 & /,13x,'is allowed for ',a,', ',a,1x,i1)
3543#if defined SOLVE3D && defined NEMURO
3544# if !(defined IVLEV_EXPLICIT || defined HOLLING_GRAZING)
3548 150 FORMAT (/,' CHECKDEFS - Need to choose a zooplankton grazing', &
3549 & ' option;',/,13x,'use either ',a,' or implicit ',a, &
3550 & '.',/,13x,'The default implicit IVLEV algorithm', &
3551 & ' does not work well yet.')
3553 END IF
3554# endif
3555#endif
3556#ifdef WEC
3557
3558
3559
3560 IF (
master.and.(nearshore.gt.1))
THEN
3562 160 FORMAT (/,' CHECKDEFS - only one wave current formulation' &
3563 & ' is allowed.')
3565 END IF
3566#endif
3567#ifdef SEDIMENT
3568 IF (
master.and.(sbed_type.gt.1))
THEN
3570 170 FORMAT (/,' CHECKDEFS - More than one sediment bed type ', &
3571 & ' selected.')
3573 END IF
3574 IF (
master.and.(sbed_load.gt.1))
THEN
3576 180 FORMAT (/,' CHECKDEFS - More than one sediment bed load ', &
3577 & ' selected.')
3579 END IF
3580#endif
3581#ifdef PARALLEL_IO
3582# if !(defined HDF5 || defined PNETCDF)
3586 190 FORMAT (/,' CHECKDEFS - Need to activate either ',a,' or ',a, &
3587 & ' options',/,13x,'for parallel I/O processing.')
3589 END IF
3590# endif
3591# if defined HDF5 && defined PNETCDF
3595 200 FORMAT (/,' CHECKDEFS - Both ',a,' and ',a,' options', &
3596 & ' selected',/,13x,'for parallel I/O processing.', &
3597 & /,13x,'Choose only one.')
3599 END IF
3600# endif
3601#endif
3602#if defined WRITE_WATER && defined WET_DRY
3603
3604
3605
3606
3607
3611 210 FORMAT (/,' CHECKDEFS - cannot activate ',a,' and ',a, &
3612 & ' together',/,13x,'because of time dependent ', &
3613 & ' Land/Sea masking.')
3615 END IF
3616#endif
3617#if ((defined AD_AVERAGES && defined ADJOINT) && defined AVERAGES) || \
3618 ((defined rp_averages && defined tl_ioms) && defined averages) || \
3619 ((defined tl_averages && defined tangent) && defined averages) || \
3620 (defined ad_averages && defined tl_averages) || \
3621 (defined ad_averages && defined rp_averages) || \
3622 (defined rp_averages && defined tl_averages)
3623
3624
3625
3626
3627
3633 220 FORMAT (/,' CHECKDEFS - cannot activate ',a,' ',a,' ',a, &
3634 & ' or',a,/,13x,'at the same time. Choose one!')
3636 END IF
3637#endif
3638#if !defined DISTRIBUTE && defined TS_MPDATA
3639
3640
3641
3642
3648 EXIT
3649 END IF
3650 END DO
3651 230 FORMAT (/,' CHECKDEFS - cannot activate option: ',a, &
3652 & /,13x,'in serial with partitions or shared-memory...', &
3653 & /,13x,'Use distributed-memory (MPI) in parallel runs.')
3654 END IF
3655#endif
3656#ifdef Q_PSOURCE
3657
3658
3659
3660
3663 240 FORMAT (/,' CHECKDEFS - cannot use obsolete option: ',a, &
3664 & /,13x,'Use instead standard input switch: ',a, &
3665 & /,13x,'Edit header file or build script!')
3667 END IF
3668#endif
3669#if defined TS_PSOURCE && defined SOLVE3D
3670
3671
3672
3673
3676 250 FORMAT (/,' CHECKDEFS - cannot use obsolete option: ',a, &
3677 & /,13x,'Use instead standard input switch: ',a, &
3678 & /,13x,'Edit header file or build script!')
3680 END IF
3681#endif
3682#ifdef UV_PSOURCE
3683
3684
3685
3686
3689 260 FORMAT (/,' CHECKDEFS - cannot use obsolete option: ',a, &
3690 & /,13x,'Use instead standard input switch: ',a, &
3691 & /,13x,'Edit header file or build script!')
3693 END IF
3694#endif
3695#if defined SPLINES && defined SOLVE3D
3696
3697
3698
3699
3700
3703 & 'https://www.myroms.org/projects/src/ticket/681'
3704 270 FORMAT (/,' CHECKDEFS - cannot use obsolete option: ',a, &
3705 & /,13x,'See following trac ticket for details: ', &
3706 & /,13x,a,/,13x,'please change header file accordingly.')
3708 END IF
3709#endif
3710#if !defined DISTRIBUTE && defined NESTING
3711
3712
3713
3714
3720 EXIT
3721 END IF
3722 END DO
3723 280 FORMAT (/,' CHECKDEFS - cannot activate option: ',a, &
3724 & /,13x,'in serial with partitions or shared-memory...', &
3725 & /,13x,'We have bugs in shared-memory that need fixing.',&
3726 & /,13x,'Use distributed-memory (MPI) in parallel runs.')
3727 END IF
3728#endif
3729#ifdef ATM_COUPLING
3730
3731
3732
3733 IF (
master.and.(iatms.gt.1))
THEN
3735 290 FORMAT (/,' CHECKDEFS - only one atmosphere model coupling', &
3736 & ' is allowed.')
3738 END IF
3739#endif
3740#if defined TIDE_GENERATING_FORCES && \
3742
3743
3744
3745
3746
3747
3751 EXIT
3752 END IF
3753 END DO
3754 300 FORMAT (/,' CHECKDEFS - cannot activate option: ',a, &
3755 & /,13x,'in analytical Cartesian grids applications...', &
3756 & /,13x,'The grid (lon,lat) is needed to compute the', &
3757 & /,13x,'equilibrium tide harmonics.')
3758 END IF
3759#endif
3760
3761 RETURN
subroutine ana_grid(ng, tile, model)
subroutine lmd_skpp(ng, tile)
character(len=256) myappcpp
integer, dimension(:), allocatable ntilex
integer, dimension(:), allocatable ntilee
logical, dimension(:), allocatable lsponge
logical, dimension(:), allocatable lnudging
integer, dimension(:), allocatable ndtfast
character(len=2048) coptions
character(len(sinp)) function, public uppercase(sinp)